我使用openssl生成认证密钥。这是我的命令:
openssl genrsa -des3 -out enc_key.pem 1024
我导出到cer文件中,然后使用java keytool导入到Java keystore(jks)中。
密钥库听起来不错。我可以从Java应用程序加载密钥库。
问题是客户端连接到服务器(在这种情况下是FTP服务器,而不是Web服务器,而我使用apache mina)时,发生了异常:
javax.net.ssl.SSLHandshakeException:SSL握手失败。在org.apache.mina.core处在org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)处在org.apache.mina.filter.ssl.SslFilter.messageReceived(SslFilter.java:433)
.filterchain.DefaultIoFilterChain.access $ 5(DefaultIoFilterChain.java:429)
…
…
我想问几件事:
我使用openssl生成的认证密码是什么?我们怎么知道 也许通过命令行openssl xxx?
我去http://java.sun.com/j2se/1.5.0/docs/guide/security/jsse/JSSERefGuide.html#AppA。我将SSL_RSA_xxx放入启用的密码套件中,但仍然无法正常工作(我放SSL_RSA是因为它使用的是SSL隐含的ssl和genrsa,我认为genrsa是生成RSA)。这是正确的吗?
有人知道解决方案吗?
或者,任何人都知道如何从openssl命令行生成标准密钥库,直到可以在Java应用程序中使用(当然不使用密码)。因为现在我可以从openssl生成证书并导出java的密钥库,但是我不知道我使用的密码是什么以及如何在java应用程序中使用密码。注意:如果密钥库是直接从java生成的,则可以运行。现在的问题是,是否由java keytool由openssl之类的证书(可能还有其他)生成的密钥库。
任何帮助将不胜感激!谢谢