2017-05-09 26 views
0

エンドポイントURLにIPアドレスが含まれていると、Javaアプリケーションがhttps SSL接続を使用してサードパーティアプリケーションに接続できました。 のIPアドレスがホスト名に変更されたとき、私は"SSLハンドシェイク例外"を取得しています。 これ以外にも、コードの更新やその他の変更はありませんでした。 実行されたことは、第三者がIPアドレスの代わりにエンドポイントURLでホスト名を使用しているという変更のみです。httpsで接続中のSSLハンドシェイク例外

以前のURL:https://10.0.0.1:5368/invoke/Upload.Accept/receiveReply 現在URL:https://service.serviceprovider.com:5368/invoke/Upload.Accept/receiveReply

この原因とどのようにそれを修正することです何任意のアイデア?

詳細が必要な場合は教えてください。以下は

は、エラーのスタックトレースです:

javax.net.ssl.SSLHandshakeException: Could not generate secret 
     at sun.security.ssl.DHCrypt.getAgreedSecret(DHCrypt.java:219) 
     at sun.security.ssl.ClientHandshaker.serverHelloDone(ClientHandshaker.java:1056) 
     at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:348) 
     at sun.security.ssl.Handshaker.processLoop(Handshaker.java:1026) 
     at sun.security.ssl.Handshaker.process_record(Handshaker.java:961) 
     at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1062) 
     at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375) 
     at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403) 
     at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387) 
     at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559) 
     at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185) 
     at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:153) 
     at com.etsalat.adapter.sadad.PaymentLoadAdapter.run(PaymentLoadAdapter.java:130) 
     at java.lang.Thread.run(Thread.java:748) 

    Caused by: java.security.NoSuchAlgorithmException: TlsPremasterSecret SecretKeyFactory not available 
     at javax.crypto.SecretKeyFactory.<init>(SecretKeyFactory.java:122) 
     at javax.crypto.SecretKeyFactory.getInstance(SecretKeyFactory.java:160) 
     at iaik.security.dh.DHKeyAgreement.engineGenerateSecret(Unknown Source) 
     at javax.crypto.KeyAgreement.generateSecret(KeyAgreement.java:648) 
     at sun.security.ssl.DHCrypt.getAgreedSecret(DHCrypt.java:217) 
+0

:詳細については、

はを参照してください。新しいURLの新しい証明書を発行する必要があるURLを変更し、その証明書を使用するようにアプリケーションを構成する場合は、特定のURLに対してSSL証明書が発行されます。 –

+0

私はあなたが単に変更することができないことを意味しました... –

+0

@OleksandrShpotaそれは '秘密を生成することはできません。ハンドシェイクが 'ServerHelloDone'まで届くと、証明書は受け入れられました。 – EJP

答えて

1

私は以前と同じ問題がありました。

例外:「SecretKeyFactory not available」は、使用しているデジタル署名APIがアプリケーションで使用するJava SDKに追加されていない場合に発生します。

APIをJava SDKに追加するには 1. lib-signedフォルダに移動し、API jarファイル(例:iaik_jce.jar)を/ jre/lib/extにコピーします。 2./jre/lib/securityに移動して、java.securityに次を追加します。 security.provider.10 = iaik.security.provider.IAIK 注:別のエントリで数字「10」が使用されている場合は、次に使用可能な番号を使用します。あなただけのURLを変更し、それが以前のように動作することを期待することができますhttp://docs.oracle.com/cd/E61144_01/English/Install_and_Config/Automatic_Install_and_Config/helpmain.htm?toc.htm?89631.htm

+0

解決策を共有してくれてありがとう。私の問題を解決しました! –

関連する問題