2014-09-12 2 views
1

i ont écrit ce code pour communiquer avec ejbca (JBoss 5.1.0.GA-JDK6 et EJBCA 4.0.10 et openjdk-6-jdk.) Serveur:authentification client Java d'exception TLS: mot de passe ne doit pas être NULL

CryptoProviderTools.installBCProvider();  
String urlstr = "https://ejbca05:8443/ejbca/ejbcaws/ejbcaws?wsdl"; 

System.setProperty("javax.net.ssl.trustStore","C:\\Users\\l.\\keystore.jks"); 
System.setProperty("javax.net.ssl.trustStorePassword","provae); 
System.setProperty("javax.net.ssl.keyStore","C:\\Users\\l.\\keystore.jks"); 
System.setProperty("javax.net.sslews.keyStorePassword","provae"); 
QName qname = new QName("http://ws.protocol.core.ejbca.org/", "EjbcaWSService"); 
EjbcaWSService service = null; 
try { 
    service = new EjbcaWSService(new URL(urlstr),qname); 
} catch (MalformedURLException e) { 
    // TODO Auto-generated catch block 
    System.out.println("errore nell'url"); 
} 
EjbcaWS ejbcaraws = service.getEjbcaWSPort(); 

mais j'ai cette exception:

Exception in thread "main" javax.xml.ws.WebServiceException: Failed to access the WSDL at: https://ejbca05:8443/ejbca/ejbcaws/ejbcaws?wsdl. It failed with: 
    Got java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: sun.security.ssl.SSLContextImpl$DefaultSSLContext) while opening stream from https://ejbca05:8443/ejbca/ejbcaws/ejbcaws?wsdl. 
    at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.tryWithMex(RuntimeWSDLParser.java:173) 
.......... 
....... 
Caused by: java.security.UnrecoverableKeyException: Password must not be null 
    at sun.security.provider.JavaKeyStore.engineGetKey(JavaKeyStore.java:124) 
    at sun.security.provider.JavaKeyStore$JKS.engineGetKey(JavaKeyStore.java:55) 
    at java.security.KeyStore.getKey(KeyStore.java:792) 

le keystore est superadmin.p12 converti en JKS .... Je l'ai essayé aussi avec d'autres keystore créé avec ejbca ou keytool mais j'obtenir la même erreur. Quelqu'un sait pourquoi?

+0

Vous ne devez pas utiliser le même fichier pour le fichier de clés et le fichier de clés certifiées. Votre code ne compile pas. – EJP

Répondre

0

en utilisant ce code semble fonctionner

String urlstr = "https://ejbca05.prv:8443/ejbca/ejbcaws/ejbcaws?wsdl"; 
     System.setProperty("javax.net.ssl.trustStore","C:/Users/l./Downloads/truststore.jks"); 
     System.setProperty("javax.net.ssl.trustStorePassword","provae"); 
     System.setProperty("javax.net.ssl.keyStore","C:/Users/l./Downloads/superadmin.p12"); 
     System.setProperty("javax.net.ssl.keyStoreType", "pkcs12"); 
     System.setProperty("javax.net.ssl.keyStorePassword","provae"); 

conversion peut-être p12 à JKS ne fonctionnait pas correctement.

EDIT: il est possible convervet à JKS avec cette commande

keytool -importkeystore -srckeystore [MY_FILE.p12] -srcstoretype pkcs12 
-srcalias [ALIAS_SRC] -destkeystore [MY_KEYSTORE.jks] 
-deststoretype jks -deststorepass [PASSWORD_JKS] -destalias [ALIAS_DEST] 
2

On dirait que la propriété a été mal réglé

Mauvais:

System.setProperty("javax.net.sslews.keyStorePassword","provae"); 

CORRECTE:

System.setProperty("javax.net.ssl.keyStorePassword","provae"); 
Questions connexes