我们让 JAVA 服务器和客户端使用 SSL 通过网络进行通信。服务器和客户端使用证书相互验证。服务器和客户端使用的密钥库类型是 JKS。服务器和客户端加载他们的密钥库和信任库文件。密钥库和信任库文件名是:server.keystore、server.truststore、client.keystore 和 client.truststore。我使用自签名证书仅用于测试。
问题:
一季度。我想知道为什么我需要在步骤 6 中将服务器和客户端自己的证书添加到它们各自的信任库中。
Q2。我可以减少步骤来实现相同的目标吗?如果是,那么如何?
为服务器创建 RSA 密钥、自签名证书、密钥库和信任库的步骤
生成私有 RSA 密钥
openssl genrsa -out diagserverCA.key 2048
Run Code Online (Sandbox Code Playgroud)创建 x509 证书
openssl req -x509 -new -nodes -key diagserverCA.key \
-sha256 -days 1024 -out diagserverCA.pem
Run Code Online (Sandbox Code Playgroud)从私钥和公共证书创建 PKCS12 密钥库。
openssl pkcs12 -export -name server-cert \
-in diagserverCA.pem -inkey diagserverCA.key \
-out serverkeystore.p12
Run Code Online (Sandbox Code Playgroud)将 PKCS12 密钥库转换为 JKS 密钥库
keytool -importkeystore -destkeystore server.keystore \
-srckeystore serverkeystore.p12 -srcstoretype pkcs12
-alias server-cert
Run Code Online (Sandbox Code Playgroud)将客户端的证书导入服务器的信任库。
keytool -import -alias client-cert \
-file diagclientCA.pem -keystore server.truststore
Run Code Online (Sandbox Code Playgroud)将服务器的证书导入服务器的信任库。
keytool -import -alias server-cert \
-file diagserverCA.pem -keystore server.truststore
Run Code Online (Sandbox Code Playgroud)为客户端创建 RSA 私钥、自签名证书、密钥库和信任库的步骤
生成私钥
openssl genrsa -out diagclientCA.key 2048
Run Code Online (Sandbox Code Playgroud)创建 x509 证书
openssl req -x509 -new -nodes -key diagclientCA.key \
-sha256 -days 1024 -out diagclientCA.pem
Run Code Online (Sandbox Code Playgroud)从私钥和公共证书创建 PKCS12 密钥库。
openssl pkcs12 -export -name client-cert \
-in diagclientCA.pem -inkey diagclientCA.key \
-out clientkeystore.p12
Run Code Online (Sandbox Code Playgroud)将 PKCS12 密钥库转换为 JKS 密钥库
keytool -importkeystore -destkeystore client.keystore \
-srckeystore clientkeystore.p12 -srcstoretype pkcs12 \
-alias client-cert
Run Code Online (Sandbox Code Playgroud)将服务器的证书导入客户端的信任库。
keytool -import -alias server-cert -file diagserverCA.pem \
-keystore client.truststore
Run Code Online (Sandbox Code Playgroud)将客户端的证书导入到客户端的信任库。
keytool -import -alias client-cert -file diagclientCA.pem \
-keystore client.truststore
Run Code Online (Sandbox Code Playgroud)普通https只需要1条命令;
keytool -genkeypair
Run Code Online (Sandbox Code Playgroud)
如果客户端不盲目信任任何证书,那么您需要将服务器公共证书复制到客户端。
你为什么使用 openssl?
https://docs.oracle.com/javase/10/tools/keytool.htm
归档时间: |
|
查看次数: |
55431 次 |
最近记录: |