0
我想在使用SSL的应用程序中确保通信安全。我正在使用org.apache.commons.ssl和OpenSSL。我已创建的密钥和CRT这样的(这些是自现在签):Java中的SSL套接字
openssl req -new -x509 -nodes -out szrr.crt -keyout szrr.key
openssl rsa -des3 -in szrr.key -out szrr.key.new
del szrr.key
move szrr.key.new szrr.key
所以我现在已经键和证书,我用这样的方式:
KeyMaterial km = new KeyMaterial(certChain, key, password);
SSLServer sslServer = new SSLServer();
sslServer.setKeyMaterial(km);
sslServer.addTrustMaterial(TrustMaterial.TRUST_ALL);
sslServerSocket = (SSLServerSocket) sslServer
.createServerSocket(serverPort);
certChain,关键是路径crt和键,密码只是密码:)
现在还有什么我必须做类似的方式来创建SSLClient?
说实话,我看到那个例子,但我不知道是怎么回事,有这些证书。目前我有一个自签名的crt和key。我知道我可以生成pem,jks和其他任何我想要的但是没有更简单的方法吗? – BartoszCichecki
如果您的服务器没有对客户端进行身份验证,那么您在客户端上所需要的只是信任库。如果确实如此,那么你的客户也需要自己的证书。但是,对于单向验证,您只需要信任存储库即可。只有一个client.addTrustMaterial(新的TrustMaterial(“通往truststore的路径”,pwd)); – Drona