我们有JAVA服务器和客户端使用SSL通过网络进行通信。服务器和客户端使用证书相互认证。服务器和客户端使用的密钥库类型为JKS。服务器和客户端加载其密钥库和信任库文件。密钥库和信任库文件名是:server.keystore,server.truststore,client.keystore和client.truststore。我正在使用自签名证书仅用于测试。
问题:
Q1。我想知道为什么我需要在步骤6中将服务器和客户端自己的证书添加到它们各自的信任库中。
Q2。我可以减少实现相同目的的步骤数吗?如果是,那怎么办?
为服务器创建RSA密钥,自签名证书,密钥库和信任库的步骤
生成私有RSA密钥
openssl genrsa -out diagserverCA.key 2048
创建一个x509证书
openssl req -x509 -new -nodes -key diagserverCA.key \ -sha256 -days 1024 -out diagserverCA.pem
根据私钥和公共证书创建PKCS12密钥库。
openssl pkcs12 -export -name server-cert \ -in diagserverCA.pem -inkey diagserverCA.key \ -out serverkeystore.p12
将PKCS12密钥库转换为JKS密钥库
keytool -importkeystore -destkeystore server.keystore \ -srckeystore serverkeystore.p12 -srcstoretype pkcs12 -alias server-cert
将客户端的证书导入到服务器的信任库中。
keytool -import -alias client-cert \ -file diagclientCA.pem -keystore server.truststore
将服务器的证书导入到服务器的信任存储中。
keytool -import -alias server-cert \ -file diagserverCA.pem -keystore server.truststore
为客户端创建RSA私钥,自签名证书,密钥库和信任库的步骤
生成私钥
openssl genrsa -out diagclientCA.key 2048
创建一个x509证书
openssl req -x509 -new -nodes -key diagclientCA.key \ -sha256 -days 1024 -out diagclientCA.pem
根据私钥和公共证书创建PKCS12密钥库。
openssl pkcs12 -export -name client-cert \ -in diagclientCA.pem -inkey diagclientCA.key \ -out clientkeystore.p12
将PKCS12密钥库转换为JKS密钥库
keytool -importkeystore -destkeystore client.keystore \ -srckeystore clientkeystore.p12 -srcstoretype pkcs12 \ -alias client-cert
将服务器的证书导入到客户端的信任库中。
keytool -import -alias server-cert -file diagserverCA.pem \ -keystore client.truststore
将客户的证书导入到客户的信任库中。
keytool -import -alias client-cert -file diagclientCA.pem \ -keystore client.truststore