2016-07

【Java】Java1.6/SolarisのSSL通信バグ対応


SOAPで接続していた連携先のシステムに、ある日突然つながらなくなった。
SOAP連携の処理で接続しようとすると以下のようなJavaのStackTraceが出てくる。

…  
Caused by: java.lang.RuntimeException: Could not parse key values  
        at sun.security.pkcs11.P11Key$P11ECPublicKey.fetchValues(P11Key.java:1000)  
        at sun.security.pkcs11.P11Key$P11ECPublicKey.getW(P11Key.java:1021)  
        at com.sun.net.ssl.internal.ssl.ECDHClientKeyExchange.<init>(ECDHClientKeyExchange.java:40)  
        at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverHelloDone(ClientHandshaker.java:779)  
        at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:238)  
        at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:593)  
        at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:529)  
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:958)  
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1203)  
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1230)  
        ... 89 more  
Caused by: java.io.IOException: extra data given to DerValue constructor  
        at sun.security.util.DerValue.init(DerValue.java:368)  
        at sun.security.util.DerValue.<init>(DerValue.java:277)  
        at sun.security.pkcs11.P11Key$P11ECPublicKey.fetchValues(P11Key.java:991)  
        ... 98 more  
…  


Java1.6/OS:Solaris。
ただ、なぜかJava1.6/OS:Windowsだと問題なく動く。(JavaのVerは同じでOSだけ違う)