Java : gestion des certificats SSL/TLS avec keytool
- Samedi 4 juillet 2009
- Publié dans Administration
- Par Boris HUISGEN
- Ecrire
Java utilise ses propres outils pour générer et utiliser les certificats sécurisés. Tout se base sur un stockage propriétaire dans un fichier keystore, regroupant des certificats/clés accessibles par des alias. Un keystore est protégé par mot de passe. Si aucun keystore n’est spécifié, le keystore personnel de l’utilisateur est utilisé (~/.keystore). Il est bien sûr possible d’importer et exporter des certificats / clés pour les utiliser dans des applications Java ou non.
Je vous propose ici un mémo des commandes les plus utilisées :
Afficher le contenu du keystore personnel :
$ keytool -list
Afficher le contenu d’un fichier keystore :
$ keytool -list -keystore my.keystore
Générer un certificat X509 auto-signé et le nommer mycert dans le keystore :
$ keytool -genkey -keystore my.keystore -alias mycert -keyalg RSA
Supprimer un certificat d’un keystore :
$ keytool -delete -keystore my.keystore -alias mycert
Afficher le contenu d’un keystore :
$ keytool -list -keystore my.keystore
Exporter le certificat d’un keystore :
$ keytool -list -keystore my.keystore -export -alias mycert -rfc
Importer un certificat externe et le protéger par mot de passe :
$ keytool -import -keystore my.keystore -alias myimport -storepass mypass -file mycertif.crt
Documentation de keytool : http://java.sun.com/javase/6/docs/technotes/tools/windows/keytool.html

Merci pour le tuto surtout que c’est très clair. Ca m’a permis de corriger certainerreurs mais restent encore d’autres liées aux certificats. je ne m’y connais pas trop dans la sécurité ssl et voilà le message que le compilateur genère:
coté client lorsque je tente d’envoyer un string->
javax.net.ssl.SSLException: Connection has been shutdown: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: Couldn’t find trusted certificate
il y a-il une manière spéciale de créer le certificat ou le vérifier ?
coté serveur :
Couldn’t get I/O for the connection to: javax.net.ssl.SSLHandshakeException: Received fatal alert: certificate_unknown
Merci d’avance.
Akil
Toutes les commandes précédentes devraient suffir. Ton client SSL doit accepter les certificats auto-signés. Teste également l’import du certificat sur l’hôte où est lancé ton client SSL.
Plus d’infos ici : http://www.java-forums.org/enterprise-javabeans/1253-java-security-cert-certificateexception-couldnt-find-trusted-certificate.html