Generates keys now!

This commit is contained in:
Steven Tracey 2023-05-03 13:55:44 -04:00
parent ef9eba123b
commit 72363fe3b7
4 changed files with 67 additions and 1 deletions

1
.gitignore vendored
View File

@ -152,3 +152,4 @@ fabric.properties
# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser
certificates/

View File

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GradleMigrationSettings" migrationVersion="1" />
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>

View File

@ -2,6 +2,6 @@ package tech.nevets.sfss;
public class Main {
public static void main(String[] args) {
StoreManager.generateCertificates();
}
}

View File

@ -0,0 +1,64 @@
package tech.nevets.sfss;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManagerFactory;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.security.KeyStore;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
public class StoreManager {
public static final File PUBLIC_KEY = new File("./certificates/public.cer");
public static final File PRIVATE_KEY = new File("./certificates/private.key");
public static void generateCertificates() {
String[][] cmds = {
{"openssl", "genrsa", "-out", "./certificates/private.key", "2048"},
{"openssl", "req", "-new", "-x509", "-subj", "/C=US/ST=Nope/L=Haha/O=IncInc/CN=www.example.com", "-key", "./certificates/private.key", "-out", "./certificates/public.cer", "-days", "365"}
};
new File("./certificates").mkdirs();
for (String[] cmd : cmds) {
Process ps;
try {
ps = Runtime.getRuntime().exec(cmd);
int exitCode = ps.waitFor(); // Wait for the process to finish
if (exitCode != 0) {
System.err.println("Error: Process exited with code " + exitCode);
return;
}
} catch (IOException e) {
e.printStackTrace();
return;
} catch (InterruptedException e) {
e.printStackTrace();
Thread.currentThread().interrupt();
return;
}
}
}
public static void loadCertificates() {
CertificateFactory certFactory = CertificateFactory.getInstance("X.509");
InputStream publicKeyStream = new FileInputStream(PUBLIC_KEY);
X509Certificate publicKey = (X509Certificate) certFactory.generateCertificate(publicKeyStream);
InputStream privateKeyStream = new FileInputStream(PRIVATE_KEY);
X509Certificate privateKey = (X509Certificate) certFactory.generateCertificate(privateKeyStream);
KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
keyStore.load(null);
keyStore.setCertificateEntry("privateKey", privateKey);
TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(keyStore);
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, tmf.getTrustManagers(), null);
KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
trustStore.load(publicKey, "".toCharArray());
}
}