我将引导您完成设置过程。我建议您对所有内容都使用一个密码,以免一开始就感到困惑。
请按照以下步骤操作:
1.在命令行上:
使用 RSA 创建公钥/私钥对,2048 位,实体名称为“secureEntity”,存储在文件“server.keyStore”中。
1.1keytool -genkeypair -alias secureEntity -keyalg RSA -keysize 2048 - keystone server.keyStore
该命令存储了“secureEntity”的私钥和公钥。
私钥,只有您可以访问它(通过知道文件密码)。
公钥存储为证书,因此它遵循 X509 证书协议字段。这样我们就可以假设它包含一个公钥,并且该公钥与“secureEntity”相关联。
这就是我们验证服务器发送给客户端的证书时需要知道的信息。
SSL 第一步验证是由客户端进行的,因此客户端首先验证服务器。
现在我们已经生成了一个证书并将其存储在 server.keyStore 中,我们可以将其导出,以便能够将其导入到一个或多个 trustStore 中。
我们的做法:
1.2keytool -exportcert -alias secureEntity -文件导出.cer -keystore server.keystore
所以现在我们可以添加到我们真正的 trustStore 文件中,它会要求我们在导入后确认我们确实信任该实体。如果该文件不存在,它会自动创建。
1.3keytool -importcert -alias secureEntity -keystore trustEntities.trustStore -文件导出.cer
现在为了方便起见,让我们将其导入到仅包含服务器证书的文件中:
1.4keytool -importcert -alias secureEntity -keystore serverKeys.keyStore -文件导出.cer
所以现在你的服务器应该有一个私钥和公钥(证书)。
In JAVA:
客户端:
System.setProperty("javax.net.ssl.trustStore","trustedEntities.trustStore")
并在此处创建 sslsocket
服务器端:
System.setProperty("javax.net.ssl.keyStore", "serverKeys.keyStore")
System.setProperty("javax.net.ssl.keyStorePassword", "您之前定义的 serverKeys.keyStore 文件密码")
创建一个服务器 ssl 就这样了。
希望这可以帮助。干杯!