客户端 - 服务器SSL通信+自签名证书

时间:2014-04-22 18:50:36

标签: ssl certificate keystore keytool jsse

我正在构建一个Java Client-Server应用程序。客户端将通过SSL与服务器通信。我想要实现客户端需要进行身份验证。我的意思是使用密钥库或其他什么,但这个话题对我来说真的很新。

所以我的问题是,如何生成客户端和服务器端密钥库(如果这就是它的名称)并自签名。从这里我可以做其余的事。

我有什么:

keytool -genkeypair -alias test -keystore test.store -storepass StorePass -validity 365 -keyalg RSA -keysize 2048 -dname "CN=TestCompany Ltd., OU=TestCompany Developments, O=TestCompany Ltd., L=MyCity, S=MyState, C=HU" -storetype jks

keytool -keystore test.store -certreq -alias test -keyalg rsa -file test.csr

我想我现在需要自我签署test.csr,对吧? 但这将是什么?应该在服务器端还是客户端使用?

在服务器端又有一个Keystore只包含证书,但不包含私钥?或者这是如何工作的? :)

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您已经生成了CSR。证书签名请求。所以,你需要有人签名。如果您只想要自签名证书,请使用-selfcert选项。

在服务器端,您需要一个包含私钥和签名证书的密钥库文件,位于相同的别名下。

在客户端,你需要:

  • 包含自签名证书的信任库,如果您这样做,或
  • 包含CA证书或其根目录的信任库,如果您已经CA签名,并且Java已经附带了这些证书。