我们有JAVA服务器和客户端使用SSL在网络上进行通信。服务器和客户端使用证书相互验证。服务器和客户端使用的keystore类型是JKS。服务器和客户端的密钥库和信任库文件名为: server.keystore、server.truststore、client.keystore和client.truststore。
我只使用自我签署的证书进行测试.
问题:
Q1。我想知道为什么在步骤6中我需要将服务器和客户端自己的证书添加到他们各自的信任库中。
Q2。我可以减少步骤数来实现同样的目标吗?如果是,那怎么做?
步骤为服务器创建RSA密钥、自签名证书、密钥存储库和信任存储库。
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.从私钥和公共证书创建PKCS12密钥存储库.
openssl pkcs12 -export -name server-cert -in diagserverCA.pem -inkey diagserverCA.key -out serverkeystore.p12
4.将PKCS12密钥库转换为JKS密钥存储库
关键工具-importkeystore -destkeystore server.keystore -srckeystore serverkeystore.p12 -srcstoretype pkcs12 -alias服务器-cert
5.将客户端证书导入服务器的信任存储区.
关键工具-import -alias client-cert -file diagclientCA.pem -keystore server.truststore
6.将服务器的证书导入服务器的信任存储区.
关键工具-import -alias server-cert -file diagserverCA.pem -keystore server.truststore
步骤为客户端创建RSA私钥、自签名证书、密钥存储库和信任存储库。
1.生成私钥
openssl genrsa -out diagclientCA.key 2048
2.创建x509证书
openssl req -x509 -new -nodes -key diagclientCA.key -sha256 -days 1024 -out diagclientCA.pem
3.从私钥和公共证书创建PKCS12密钥存储库.
openssl pkcs12 -export -name client-cert -in diagclientCA.pem -inkey diagclientCA.key -out clientkeystore.p12
4.将PKCS12密钥库转换为JKS密钥存储库
关键工具-importkeystore -destkeystore client.keystore -srckeystore clientkeystore.p12 -srcstoretype pkcs12 -alias client-cert
5.将服务器证书导入客户端的信任存储区.
关键工具-import -alias server-cert -file diagserverCA.pem -keystore client.truststore
6.将客户端证书导入到客户端的信任存储区.
关键工具-import -alias client-cert -file diagclientCA.pem -keystore client.truststore
发布于 2017-02-23 10:50:23
Q1。我想知道为什么在步骤6中我需要将服务器和客户端自己的证书添加到他们各自的信任库中。
没有。您可以将服务器和客户端证书添加到彼此的信任库中。服务器和客户端不需要信任他们自己的证书,但是他们需要相互信任对方的证书。
Q2。我可以减少步骤数来实现同样的目标吗?如果是,那怎么做?
您可以使用keytool
完成整个过程。大量有记载的例子。您根本不需要使用openssl
。
评论:
您将在JDK文档中找到在JSSE参考指南中执行大量操作的正确说明。每步约三步。但它真正显示的是,自签署的证书真的是不值得的纸张,他们被打印。获得CA签署的证书。更有价值,更容易部署(没有导出步骤)。
你从哪弄来这些垃圾的?
发布于 2017-10-26 10:39:47
Q1。我想知道为什么在步骤6中我需要将服务器和客户端自己的证书添加到他们各自的信任库中。
A1。如果您没有使用公共证书颁发机构对客户端和服务器证书进行签名.将每一个添加到信任存储中是唯一的方法。然而..。即使在测试环境中,也可以创建自己的证书颁发机构,并使用它对您创建的客户端和服务器证书进行签名。然后,您的信任存储将只需要包含证书颁发机构的公钥。
Q2。我可以减少步骤数来实现同样的目标吗?如果是,那怎么做?
A2。是的,使用通用证书对客户端和服务器证书进行签名。
查看这个职位中的脚本,了解如何创建自己的CA并使用它签署服务器和客户端证书。它也创建了你的信任商店..。
希望这能有所帮助。
最好的,艾斯
https://stackoverflow.com/questions/42398344
复制相似问题