Javaキーストアは、OpenSSLによって生成されたキーペアをインポートできますか?

StackOverflow https://stackoverflow.com/questions/2685512

  •  30-09-2019
  •  | 
  •  

質問

OpenSSLを使用して認定キーを生成します。これが私の命令です:

opensSl genrsa -des3 -out enc_key.pem 1024

CERファイルにエクスポートし、Java keytoolでJava Keystore(JKS)にインポートします。

キーストアはいいですね。 Javaアプリからキーストアをロードできます。

問題は、クライアントがサーバーに接続するとき(この場合、WebサーバーではなくFTPサーバーであり、Apache Minaを使用します)、例外が発生しました。

javax.net.ssl.sslhandshakeexception:SSLハンドシェイクは失敗しました。 org.apache.mina.filter.ssl.sslfilter.messagereceived(sslfilter.java:433)at org.apache.mina.core.filterchain.defaultiofilterchain.callnextmessageereceived(defaulterchain.java:434 atまたは.filterchain.defaultiofilterchain.access $ 5(defaultiofilterchain.java:429)

...

原因:javax.net.ssl.sslhandshakeexception:com.sun.net.ssl.internal.ssl.handshaker.checkthrown(com.sun.net.ssl.internal.ssl.sslengineimplの共通点はありません。 com.sun.net.ssl.internal.ssl.sslengineimpl.writeapprecord(不明なソース)のcom.sun.net.ssl.internal.ssl.sslengineimpl.wrap(不明なソース)のjavax.nety(unknown source)のcom.sun.net.ssl.internal.ssl.sslengineimpl.writeapprecordのchecktaskthrown(不明なソース) .ssl.sslengine.wrap(不明なソース)

...

原因:javax.net.ssl.sslhandshakeexception:com.sun.net.ssl.internal.ssl.alerts.getsslexception(com.sun.net.ssl.internal.ssl.sslengineimpl.sslengineimplの共通点はありません。 .fatal(不明なソース)

私が尋ねたいことがいくつかあります:

  1. OpenSSLで生成した認証の暗号は何ですか?どうすれば知ることができますか?たぶんコマンドラインによってopenssl xxx?
  2. 私は行きます http://java.sun.com/j2se/1.5.0/docs/guide/security/jsse/jsserefguide.html#appa. 。また、SSL_RSA_XXXを有効にしましたが、それでも動作できません(SSL_RSAをSSLがSSL emplisitを使用しているため、GenRSAを使用しているため、GenrsaはRSAを生成します)。それが正しいか?
  3. 誰かが解決策を知っていますか?
  4. または、openSSLコマンドラインから標準のキーストアを生成する方法を知っている人は、Javaアプリ(Cipherとのコースオフ)で使用できるようになります。今はOpenSSLから認定を生成し、Keystore Javaをエクスポートできるからですが、私が使用した暗号とJavaアプリでの使用方法はわかりません。注:キーストアがJavaから直接生成される場合は実行できます。現在、問題は、OpenSSLなどの認証からJava Keytoolによって生成されたキーストアの場合です(およびその他)。

どんな助けも感謝します!ありがとう

役に立ちましたか?

解決

なぜOpenSSLを使用してキーペアを生成しているのですか?使ってみませんか keytool?

genrsa ツールは秘密鍵を生成するだけです。対応する証明書をどのように作成していますか?秘密鍵をJavaキーストアにどのようにインポートしていますか? (私は尋ねます、なぜなら keytool 既存のキーストアからのみ秘密キーをインポートすることができ、Java 6以降のみからインポートできます。)

あなたの問題は、あなたのキーストアにキーエントリが含まれていないことだと思います(秘密鍵 対応する証明書)。キーストアの内容をリストするとき keytool, 、いくつのエントリがありますか?それらは重要なエントリですか、それとも信頼できるエントリですか?


サーバーは、それ自体を認証するために秘密鍵にアクセスする必要があります。秘密鍵をインポートするには、使用します Java 6's 強化 keytool.

OpenSSLを使用してキーと証明書を作成した後、OpenSSLを使用してPKCS#12キーストアを作成します。

openssl pkcs12 -export -in cert.pem -inkey key.pem > server.p12

次に、このストアをJavaキーストアに変換します。

keytool -importkeystore -srckeystore server.p12 -destkeystore server.jks -srcstoretype pkcs12

次に使用します server.jks 証明書を含むSSLに有効なサーバーに 秘密鍵。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top