Show pageOld revisionsBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== Java: Import di un certificato SSL ====== {{http://upload.wikimedia.org/wikipedia/it/2/2e/Java_Logo.svg?.png?nolink&50 |}} Questo documento descrive i passi necessari per importare correttamente un certificato SSL per essere utilizzato nelle nostre applicazioni Java. Un caso comune che richiede l'import di un certificato SSL è quando viene sollevata una //exception// quando tentiamo di invocare un sistema remoto richiede l'uso del protocollo SSL: <WRAP center round alert 90%> javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: No trusted certificate found </WRAP> ===== Ottenere il certificato ===== Richiediamo al sistema esterno il certificato firmato ed opzionalmente il certificato dell'ente certificatore (chiamato solitamente Private Root CA). In alternativa collegarsi con il proprio browser, all'url del sistema esterno e salvare il certificato cliccando sull'icona del lucchetto sulla barra degli indirizzi (o sulla barra di stato) ed esportare il certificato in formato **X.509** (**CER** o **PEM**). ===== Importiamo il certificato ===== <WRAP center round important 90%> Per importare il certificato è necessario avere l'utente **root**, in quanto owner del keystore. </WRAP> <WRAP center round tip 90%> Possiamo dare al file del keystore i permessi **0777** in modo da poter effettuare questa operazione anche con un'utente //non-root// (in ambito aziendale chiedere al gestore della macchina se le policy permettono questa modifica): # chmod 0777 $JAVA_HOME/jre/lib/security/cacerts </WRAP> Per sicurezza facciamo il backup del file **cacerts** presente nella directory ''lib/security'' del JRE di Java: # cp $JAVA_HOME/jre/lib/security/cacerts $JAVA_HOME/jre/lib/security/cacerts.orig Importiamo il certificato nel keystore con il seguente comando: # $JAVA_HOME/jre/bin/keytool \ -importcert -keystore $JAVA_HOME/jre/lib/security/cacerts \ -alias alias-cert -file /path/file.cer -trustcacerts I parametri utilizzati sono: ^ -importcert | Indica al keytool che vogliamo importare un nuovo certificato | ^ -keystore | Path del file **cacerts** del keystore | ^ -alias | Alias che vogliamo dare al certificato (opzionale) | ^ -file | Path del file del certificato del sistema esterno | ^ -trustcacerts | Indica al keytool che il certificato è valido (optionale) | <WRAP center round important 90%> Lanciando il comando ci verrà richiesta una password che di default è **changeit**. Nel caso non è stato specificato l'opzione //-trustcacerts//, se il certificato è self-signed o firmato da un ente interno non riconosciuto verrà chiesto se considerare il certificato sicuro o meno. </WRAP> Verifichiamo che il certificato sia stato importato correttamente: # $JAVA_HOME/jre/bin/keytool \ -keystore $JAVA_HOME/jre/lib/security/cacerts -list | grep "alias-cert" ===== Per maggiori informazioni ===== * [[man>keytool(1)]] {{tag>how-to java ssl}} how-to/java-import-certificato-ssl.txt Last modified: 9 years agoby Giuseppe Di Terlizzi Log In