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が意図した設定になっているか確認してください。
アプリケーションで鍵ペアを作成する場合は、作成時間の検証を行い、時間がかかる場合があることを考慮して、アプリケーションを作成してください。