java - 如何将 SSL 证书添加到 cacerts 和 keystore ?

标签 java spring-boot ssl keytool

我使用以下方法创建了一个 CSR 文件

openssl req -nodes -newkey rsa:2048 -keyout yourdomain.key -out yourdomain.csr –sha256

它创建了一个 CSR 文件和一个 key 文件。我将 CSR 文件提交给了 CA。 他们用一个 yourdomain.crt 单个文件作为回应。

我尝试通过以下方式将 yourdomain.crt 导入我的 java 的 cacert:

keytool -import -keystore /usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/security/cacerts -file ~/Desktop/user/yourdomain.crt -alias yourdomain

现在我对如何生成 keystore (jks 文件)感到困惑。我是否使用相同的 yourdomain.crt? 我应该使用什么命令?

我的spring boot程序包括

 File trustStoreFile = new File(CACERTS_PATH);
        File keyStoreFile = new File(JKS_PATH);
        KeyStore ks = KeyStore.getInstance("JKS");
        ks.load(new FileInputStream(keyStoreFile), KEY_PASS.toCharArray());
        return SSLContextBuilder.create()
                .useProtocol("TLS")
                .loadKeyMaterial(ks, KEY_PASS.toCharArray())
                .loadTrustMaterial(trustStoreFile, TRUST_PASS.toCharArray())
                .build();

所以我需要一个 cacerts 路径,我相信它是来 self 的 jdk 的 cacerts,密码是我在提示输入时输入的密码。

现在如何为它生成一个 Keystore 文件?

我是否需要为 Spring boot 添加 server.ssl 属性?

最佳答案

首先,您必须将您的域.crt 转换为.p12 格式,为此,在openssl 终端上编写以下命令

pkcs12 -export -in yourdomain.crt -inkey yourdomain.key -chain -CAfile rootCA.pem -name “localhost” -out my.p12

在哪里, rootCA.pem = 你必须创建它,为此在 openssl 上写入以下命令,

step 1 : genrsa -des3 -out rootCA.key 2048 and hit enter

 you will get rootCA.key file.

step 2 : req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.pem

yourdomain.key = 你必须通过在 openssl 上输入以下命令来创建它,

req -new -sha256 -nodes -out server.csr -newkey rsa:2048 -keyout server.key -config
server.csr.cnf

在哪里, server.csr.cnf 文件包含这个,你可以在里面写

authorityKeyIdentifier = keyid, issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]

DNS.1 = localhost
IP.1=127.0.0.1
IP.2 = 192.168.1.XX
IP.3 = 192.XXX.XX.XXX
IP.4 = 192.XX.XX.XX and soon 

server.csr 和 server.key 文件已创建。

完成所有步骤后,您将获得 .p12 格式的文件,现在您必须将 .p12 文件格式转换为 keystore.jks 文件格式,为此在 cmd 上写入以下命令(以管理模式打开)

Keytool -importkeystore -deststorepass MY-KEYSTORE-PASS -destkeystore my-keystore.jks 
-srckeystore my.p12 -srcstoretype PKCS12

关于java - 如何将 SSL 证书添加到 cacerts 和 keystore ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56359266/

相关文章:

java - 尝试从同一布局获取或将按钮传递给自定义 SurfaceView

spring-boot - 升级到 Spring Boot 2.4.0 打破传统应用

ssl - DSC - 客户端错误 - 无法获取私钥

java - Rest WS 部分 JSON 响应

java - Spring Boot强制 headless (headless)模式

android - "Not trusted Server Certificate"在 Android 2.2 但不是 3.0

ssl - 在 MAMP Pro 3.0.6 中获取 SSL

java - JUnit 如何知道要测试哪个类?

java - Spring中每个方法执行前如何调用自定义验证

java - FTP 客户端连接被拒绝