我使用
创建了一个 CSR 文件openssl req -nodes -newkey rsa:2048 -keyout yourdomain.key -out yourdomain.csr –sha256
它创建了一个 CSR 文件和一个密钥文件。我向 CA 提交了 CSR 文件。 他们回复了一个 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 吗? 我应该使用什么命令?
我的 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路径,我相信它是来自我的jdk的cacerts,密码是我在提示时输入的密码。
现在如何为其生成密钥库文件?
我需要为 Spring boot 添加 server.ssl 属性吗?
首先,您必须将 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