首页 > 解决方案 > 如何将 SSL 证书添加到 cacerts 和 keystore?

问题描述

我使用创建了一个 CSR 文件

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

它创建了一个 CSR 文件和一个密钥文件。我将 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

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

我的春季启动程序包括

 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 路径,我相信它是来自我的 jdk 的 cacerts,密码是我在提示输入时输入的那个。

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

我需要为 Spring Boot 添加 server.ssl 属性吗?

标签: javaspring-bootsslkeytool

解决方案


首先,您必须将 yourdomain.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

推荐阅读