gpt4 book ai didi

java - 如何使用自签名证书创建 keystore 和信任库?

转载 作者:搜寻专家 更新时间:2023-11-01 02:58:54 27 4
gpt4 key购买 nike

我们有 JAVA 服务器和客户端使用 SSL 通过网络进行通信。服务器和客户端使用证书相互验证。服务器和客户端使用的 keystore 类型是 JKS。服务器和客户端的 keystore 和信任库文件名是:server.keystore、server.truststore、client.keystore 和 client.truststore。

我使用自签名证书仅用于测试。

问题:

Q1。我想知道为什么我需要在步骤 6 中将服务器和客户端自己的证书添加到各自的信任库中。

Q2。我可以减少实现相同目标的步骤吗?如果是,那么如何?

为服务器创建 RSA key 、自签名证书、 keystore 和信任库的步骤

<强>1。生成 RSA 私钥

openssl genrsa -out diagserverCA.key 2048

<强>2。创建 x509 证书

openssl req -x509 -new -nodes -key diagserverCA.key -sha256 -days 1024 -out diagserverCA.pem

<强>3。从私钥和公共(public)证书创建 PKCS12 keystore 。

openssl pkcs12 -export -name server-cert -in diagserverCA.pem -inkey diagserverCA.key -out serverkeystore.p12

<强>4。将 PKCS12 keystore 转换为 JKS keystore

keytool -importkeystore -destkeystore server.keystore -srckeystore serverkeystore.p12 -srcstoretype pkcs12 -alias server-cert

<强>5。将客户端的证书导入服务器的信任库。

keytool -import -alias client-cert -file diagclientCA.pem -keystore server.truststore

6.将服务器的证书导入服务器的信任库。

keytool -import -alias server-cert -file diagserverCA.pem -keystore server.truststore

为客户端创建 RSA 私钥、自签名证书、 keystore 和信任库的步骤

<强>1。生成私钥

openssl genrsa -out diagclientCA.key 2048

<强>2。创建 x509 证书

openssl req -x509 -new -nodes -key diagclientCA.key -sha256 -days 1024 -out diagclientCA.pem

<强>3。从私钥和公共(public)证书创建 PKCS12 keystore 。

openssl pkcs12 -export -name client-cert -in diagclientCA.pem -inkey diagclientCA.key -out clientkeystore.p12

<强>4。将 PKCS12 keystore 转换为 JKS keystore

keytool -importkeystore -destkeystore client.keystore -srckeystore clientkeystore.p12 -srcstoretype pkcs12 -alias client-cert

<强>5。将服务器的证书导入客户端的信任库。

keytool -import -alias server-cert -file diagserverCA.pem -keystore client.truststore

6.将客户端的证书导入客户端的信任库。

keytool -import -alias client-cert -file diagclientCA.pem -keystore client.truststore

最佳答案

Q1. I would like to know why I need to add server’s and client’s own certificates into their respective truststores, in step 6.

你不知道。您将服务器和客户端证书添加到彼此的 信任库中。服务器和客户端不需要信任他们自己的证书,但他们需要信任彼此的证书。

Q2. Can I reduce the number steps to achieve the same thing? If yes, then how?

您可以使用 keytool 完成所有操作。大量记录在案的例子。您根本不需要使用 openssl

批评:

  • 在第一部分中,第 5 步和第 6 步都是错误的。应该有一个步骤:将服务器的证书导出到客户端的信任库。
  • 同样,在第二部分中,第 5 步和第 6 步又是错误的,同样应该只有一步:将客户端的证书导出到服务器的 keystore 。
  • 换句话说,两个步骤5应该互换,两个步骤6删除。

您会在 JSSE Reference Guide 中找到正确的操作说明在 JDK 文档中。每个大约三步。但它真正要表明的是,自签名证书确实不值得打印它们的纸张。获取 CA 签名的证书。更多的值(value)和更容易部署(无导出步骤)。

你从哪里弄来这些垃圾的?

关于java - 如何使用自签名证书创建 keystore 和信任库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42398344/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com