java - 如何将 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 属性吗?
解决方案
首先,您必须将 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
推荐阅读
- javascript - 单击时更改页面的功能无缘无故地工作
- java - 我可以有多个文件夹,如 webapps 并指定访问哪个 ROOT.war 文件的域
- debezium - Debezium 不捕获“级联删除”
- java - 为什么我只能看到这个 Kafka 示例中的所有其他消息?
- php - 如何在 MySQL 和 PHP 中处理随时间增加的数据
- python - 为什么 QListView 比 QListWidget 慢?
- python - 使用在所有单元测试模块之间共享的单个内存中 Sqlite 连接?
- kotlin - 重定向到 Ktor 中的绝对 URL
- android - 请修复 local.properties 文件中的“sdk.dir”属性。Studio 删除了路径中的斜杠。导入项目错误。怎么解决,调试?
- github - 在 github markdown 标头中使用较小的字体编写一个单词 ([link_name])