openssl で認証キーを生成します。これが私のコマンドです:
openssl genrsa -des3 -out enc_key.pem 1024
cer ファイルにエクスポートしてから、Java keytool を使用して Java キーストア (jks) にインポートします。
キーストアはいいですね。Java アプリからキーストアをロードできます。
問題は、クライアントがサーバーに接続するときです (この場合、Web サーバーではなく FTP サーバーであり、私は apache mina を使用します)、例外が発生しました:
javax.net.ssl.SSLHandshakeException: SSL ハンドシェイクに失敗しました。org.apache.mina.filter.ssl.SslFilter.messageReceived(SslFilter.java:433) で org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434) で org.apache.mina.core .filterchain.DefaultIoFilterChain.access$5(DefaultIoFilterChain.java:429)
...
原因: javax.net.ssl.SSLHandshakeException: no cipher suites in common at com.sun.net.ssl.internal.ssl.Handshaker.checkThrown (Unknown Source) at com.sun.net.ssl.internal.ssl.SSLEngineImpl com.sun.net.ssl.internal.ssl の .checkTaskThrown (不明なソース) com.sun.net.ssl.internal.ssl.SSLEngineImpl.wrap (不明なソース) の javax.net .ssl.SSLEngine.wrap (不明なソース)
...
原因: javax.net.ssl.SSLHandshakeException: no cipher suites in common at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source) at com.sun.net.ssl.internal.ssl.SSLEngineImpl .fatal(不明なソース)
いくつかお聞きしたいことがあります。
- openssl で生成する証明書の暗号とは何ですか? どうすれば知ることができますか?おそらくコマンドラインopenssl xxxで?
- http://java.sun.com/j2se/1.5.0/docs/guide/security/jsse/JSSERefGuide.html#AppAにアクセスします。そして、SSL_RSA_xxxを有効な暗号スイートに配置しましたが、まだ機能しません(SSLがssl Implisitとgenrsaを使用しているため、SSL_RSAを配置しました。私の意見はgenrsaがRSAを生成するためです)。それが正しいか?
- 誰かが解決策を知っていますか?
- または、Javaアプリで使用できるようになるまで、opensslコマンドラインから標準キーストアを生成する方法を誰もが知っています(もちろん暗号を使用します)。現在、openssl から証明書を生成し、キーストア Java をエクスポートできますが、使用した暗号と Java アプリでの使用方法がわからないためです。注: キーストアが Java から直接生成されている場合は実行できます。現在問題は、java keytool によって生成されたキーストアが、openssl などの認証 (およびその他の可能性) から生成された場合です。
どんな助けでも大歓迎です!ありがとう