SSL使用時のjavax.net.ssl.SSLExceptionについて
Solaris上で、JDK/JREでSSL使用時、使用するハードウェア・OSのパッチレベルによって、SSLExceptionが発生する場合があります。
例えば、以下のようなExceptionが発生する場合があります。
javax.net.ssl.SSLException: java.lang.RuntimeException: Could not generate secret
at sun.security.ssl.Alerts.getSSLException(Alerts.java:208)
at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1884)
at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1842)
at sun.security.ssl.SSLSocketImpl.handleException(SSLSocketImpl.java:1825)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1346)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1323)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:563)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:153)
at com.sun.enterprise.admin.remote.RemoteAdminCommand.doHttpCommand(RemoteAdminCommand.java:665)
... 16 more
Caused by: java.lang.RuntimeException: Could not generate secret
at sun.security.ssl.ECDHCrypt.getAgreedSecret(ECDHCrypt.java:99)
at sun.security.ssl.ClientHandshaker.serverHelloDone(ClientHandshaker.java:933)
at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:285)
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:868)
at sun.security.ssl.Handshaker.process_record(Handshaker.java:804)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1016)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339)
... 21 more
Caused by: java.security.InvalidKeyException: Could not derive key
at sun.security.pkcs11.P11ECDHKeyAgreement.nativeGenerateSecret(P11ECDHKeyAgreement.java:207)
at sun.security.pkcs11.P11ECDHKeyAgreement.engineGenerateSecret(P11ECDHKeyAgreement.java:174)
at javax.crypto.KeyAgreement.generateSecret(KeyAgreement.java:632)
at sun.security.ssl.ECDHCrypt.getAgreedSecret(ECDHCrypt.java:97)
... 28 more
Caused by: sun.security.pkcs11.wrapper.PKCS11Exception: CKR_ARGUMENTS_BAD
at sun.security.pkcs11.wrapper.PKCS11.C_DeriveKey(Native Method)
at sun.security.pkcs11.P11ECDHKeyAgreement.nativeGenerateSecret(P11ECDHKeyAgreement.java:195)
|
この場合、以下のプロパティをjavaコマンドに指定してください。
-Dcom.sun.net.ssl.enableECC=false |
鍵ペアの作成時間について
以下の機能により、RSAアルゴリズムで鍵ペアを作成する場合に、数分以上の作成時間がかかることがあります。
keytoolの-genkeypairまたは-genkeyオプションにより、鍵ペアを作成する場合
java.security.KeyPairGeneratorクラスのgenerateKeyPair()またはgenKeyPair()メソッドにより、鍵ペアを作成する場合
鍵ペアを作成する処理に時間がかかっている場合には、暗号アルゴリズムおよびkeysizeが意図した設定になっているか確認してください。
アプリケーションで鍵ペアを作成する場合は、作成時間の検証を行い、時間がかかる場合があることを考慮して、アプリケーションを作成してください。