Skip to content

Commit b6d489b

Browse files
authored
Replace createServerKeys.sh (#314)
1 parent 298876f commit b6d489b

3 files changed

Lines changed: 62 additions & 3 deletions

File tree

server/scripts/entrypoint.sh

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
11
#! /bin/sh
22
mkdir keys
3-
./scripts/createServerKeys.sh /app/keys
4-
exec java -Djwt.private.key=file:/app/keys/app.key -Djwt.public.key=file:/app/keys/app.pub -jar findfirst.jar
3+
exec java -Djwt.private.key=file:/app/keys/app.key -Djwt.public.key=file:/app/keys/app.pub -jar findfirst.jar

server/src/main/java/dev/findfirst/FindFirstApplication.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
package dev.findfirst;
22

3+
import java.io.IOException;
4+
import java.security.NoSuchAlgorithmException;
35
import java.util.Arrays;
46
import java.util.Collections;
57

8+
import dev.findfirst.security.util.KeyGenerator;
9+
610
import lombok.extern.slf4j.Slf4j;
711
import org.springframework.boot.SpringApplication;
812
import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -22,8 +26,9 @@ public class FindFirstApplication {
2226

2327
public static void main(String[] args) {
2428
try {
29+
KeyGenerator.generateKeys("app.key", "app.pub");
2530
SpringApplication.run(FindFirstApplication.class, args);
26-
} catch (ApplicationContextException ude) {
31+
} catch (ApplicationContextException | NoSuchAlgorithmException | IOException ude) {
2732
log.error("""
2833
2934
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package dev.findfirst.security.util;
2+
3+
import java.io.File;
4+
import java.io.FileOutputStream;
5+
import java.io.IOException;
6+
import java.security.KeyPair;
7+
import java.security.KeyPairGenerator;
8+
import java.security.NoSuchAlgorithmException;
9+
import java.security.PrivateKey;
10+
import java.security.PublicKey;
11+
import java.security.spec.PKCS8EncodedKeySpec;
12+
import java.security.spec.X509EncodedKeySpec;
13+
14+
public class KeyGenerator {
15+
16+
public static void generateKeys(String privateKeyPath, String publicKeyPath)
17+
throws NoSuchAlgorithmException, IOException {
18+
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
19+
keyGen.initialize(2048);
20+
KeyPair pair = keyGen.generateKeyPair();
21+
PrivateKey privateKey = pair.getPrivate();
22+
PublicKey publicKey = pair.getPublic();
23+
24+
// Save the private key in PKCS8 format
25+
PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(privateKey.getEncoded());
26+
try (FileOutputStream fos = new FileOutputStream(privateKeyPath)) {
27+
fos.write(pkcs8EncodedKeySpec.getEncoded());
28+
}
29+
30+
// Save the public key in X.509 format
31+
X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(publicKey.getEncoded());
32+
try (FileOutputStream fos = new FileOutputStream(publicKeyPath)) {
33+
fos.write(x509EncodedKeySpec.getEncoded());
34+
}
35+
}
36+
37+
public static void main(String[] args) {
38+
String privateKeyPath = "app.key";
39+
String publicKeyPath = "app.pub";
40+
41+
File privateKeyFile = new File(privateKeyPath);
42+
File publicKeyFile = new File(publicKeyPath);
43+
44+
if (!privateKeyFile.exists() || !publicKeyFile.exists()) {
45+
try {
46+
generateKeys(privateKeyPath, publicKeyPath);
47+
System.out.println("Keys generated successfully.");
48+
} catch (NoSuchAlgorithmException | IOException e) {
49+
e.printStackTrace();
50+
}
51+
} else {
52+
System.out.println("Keys already exist.");
53+
}
54+
}
55+
}

0 commit comments

Comments
 (0)