java.security.InvalidKeyException: Unsupported key type: SunPKCS11-MyPKCS11
881648Aug 10 2011 — edited Oct 8 2011I am having a very strange issue with my CAC card. I wrote a small Java program to login into ProjectForge.mil webservice
ICollabNetSoap m_sfSoap = (ICollabNetSoap)
ClientSoapStubFactory.getSoapStub(ICollabNetSoap.class, "https://project.forge.mil/");
String sessionId = m_sfSoap.login("", "");
After entering CAC PIN, it is throwing exception saying that "javax.net.ssl.SSLHandshakeException: Received fatal alert: unsupported_certificate".
More specific exception is:
Caused by: java.security.InvalidKeyException: Unsupported key type: SunPKCS11-MyPKCS11 RSA private key, 2048 bits (id 39632224, token object, sensitive, unextractable)
Note: I have asked three of my co-workers to run the same program using their CAC's and seems to be working fine.
Only the difference between their CACs and mine is CA(Certificate Authority Value. Their's is 24 and where as mine is 25). It looks like JVM was not able to understand the private key of my CAC.
On the other note, my CAC cworks fine with web service client application that was written in .Net.
I am using Jdk-1.6.0_26 and I have already downloaded and installed latest jce .jar files.
Any help is greatly appreciated
Here are the exception details:
=======================================
[java] Tue Aug 02 17:07:54 MST 2011 URL assignment worked
[java] Tue Aug 02 17:07:54 MST 2011 Trying login...
[java] Exception in thread "main" AxisFault
[java] faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
[java] faultSubcode:
[java] faultString: javax.net.ssl.SSLHandshakeException: Received fatal alert: unsupported_certificate
[java] faultActor:
[java] faultNode:
[java] faultDetail:
[java] {http://xml.apache.org/axis/}stackTrace:javax.net.ssl.SSLHandshakeException: Received fatal alert: unsupported_certificate
[java] at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174)
[java] at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:136)
[java] at com.sun.net.ssl.internal.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1720)
[java] at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:954)
[java] at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1138)
[java] at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1165)
[java] at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1149)
[java] at org.apache.axis.components.net.JSSESocketFactory.create(JSSESocketFactory.java:186)
[java] at org.apache.axis.transport.http.HTTPSender.getSocket(HTTPSender.java:191)
[java] at org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:404)
[java] at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:138)
[java] at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
[java] at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
[java] at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
[java] at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
[java] at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
[java] at org.apache.axis.client.Call.invoke(Call.java:2767)
[java] at org.apache.axis.client.Call.invoke(Call.java:2443)
[java] at org.apache.axis.client.Call.invoke(Call.java:2366)
[java] at org.apache.axis.client.Call.invoke(Call.java:1812)
[java] at com.collabnet.ce.soap50.webservices.cemain.CollabNetSoapStub.login(CollabNetSoapStub.java:115)
[java] at com.collab.examples.LoginTF.main(LoginTF.java:30)
[java] {http://xml.apache.org/axis/}hostname:GDYL8420N5B
[java] javax.net.ssl.SSLHandshakeException: Received fatal alert: unsupported_certificate
[java] at org.apache.axis.AxisFault.makeFault(AxisFault.java:101)
[java] at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:154)
[java] at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
[java] at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
[java] at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
[java] at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
[java] at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
[java] at org.apache.axis.client.Call.invoke(Call.java:2767)
[java] at org.apache.axis.client.Call.invoke(Call.java:2443)
[java] at org.apache.axis.client.Call.invoke(Call.java:2366)
[java] at org.apache.axis.client.Call.invoke(Call.java:1812)
[java] at com.collabnet.ce.soap50.webservices.cemain.CollabNetSoapStub.login(CollabNetSoapStub.java:115)
[java] at com.collab.examples.LoginTF.main(LoginTF.java:30)
[java] Caused by: javax.net.ssl.SSLHandshakeException: Received fatal alert: unsupported_certificate
[java] at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174)
[java] at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:136)
[java] at com.sun.net.ssl.internal.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1720)
[java] at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:954)
[java] at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1138)
[java] at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1165)
[java] at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1149)
[java] at org.apache.axis.components.net.JSSESocketFactory.create(JSSESocketFactory.java:186)
[java] at org.apache.axis.transport.http.HTTPSender.getSocket(HTTPSender.java:191)
[java] at org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:404)
[java] at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:138)
[java] ... 11 more
[java] Java Result: 1
==================================================================
I have captured more specific exception which says
Caused by: java.security.InvalidKeyException: Unsupported key type: SunPKCS11-MyPKCS11 RSA private key, 2048 bits (id 39632224, token object, sensitive, unextractable)