Jef*_*Jef 21 java openssl keystore
我用openssl生成一个认证密钥.这是我的命令:
openssl genrsa -des3 -out enc_key.pem 1024
我导出到cer文件,然后用java keytool我导入到java密钥库(jks).
密钥库听起来不错.我可以从我的Java应用程序加载密钥库.
问题是当客户端连接到服务器时(在这种情况下是FTP服务器,而不是Web服务器,我使用apache mina),发生异常:
javax.net.ssl.SSLHandshakeException:SSL握手失败.org.apache.mina.filter.ssl.SslFilter.messageReceived(SslFilter.java:433)位于org.apache.mina.core的org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434) .filterchain.DefaultIoFilterChain.access $ 5(DefaultIoFilterChain.java:429)
...
引起:javax.net.ssl.SSLHandshakeException:com.sun.net.ssl.ssl.ssl.inl上的com.sun.net.ssl.internal.ssl.Handshaker.checkThrown(未知来源)没有共同的密码套件.SLEngineImpl来自com.sun.net.ssl.internal.ssl.SSLEngineImpl.writeAppRecord(未知来源)的.checkTaskThrown(未知来源)位于javax.net的com.sun.net.ssl.internal.ssl.SSLEngineImpl.wrap(未知来源) .ssl.SSLEngine.wrap(未知来源)
...
引起:javax.net.ssl.SSLHandshakeException:在com.sun.net.ssl.inl.ssl.SSLEngineImpl的com.sun.net.ssl.internal.ssl.Alerts.getSSLException(未知来源)中没有共同的密码套件.fatal(未知来源)
我想问一些事情:
任何帮助将不胜感激!谢谢
eri*_*son 48
为什么使用OpenSSL生成密钥对?为什么不用keytool?
该genrsa工具只生成一个私钥.你是如何创建相应的证书的?如何将私钥导入Java密钥库?(我问,因为keytool只能从现有的密钥库中导入私钥,而且只能从Java 6开始导入.)
我怀疑您的问题是您的密钥库不包含密钥条目(私钥和相应的证书).列出密钥库内容时keytool,有多少条目?它们是关键条目还是可信条目?
服务器需要访问私钥才能进行身份验证.要导入私钥,请使用Java 6的增强功能keytool.
使用OpenSSL创建密钥和证书后,使用OpenSSL创建PKCS#12密钥库:
openssl pkcs12 -export -in cert.pem -inkey key.pem > server.p12
Run Code Online (Sandbox Code Playgroud)
然后将此存储转换为Java密钥库:
keytool -importkeystore -srckeystore server.p12 -destkeystore server.jks -srcstoretype pkcs12
Run Code Online (Sandbox Code Playgroud)
现在server.jks在您的SSL启用服务器中使用,该服务器包含证书和私钥.
| 归档时间: |
|
| 查看次数: |
46864 次 |
| 最近记录: |