Je souhaite importer un certificat auto-signé dans Java afin que toute application Java qui tentera d'établir une connexion SSL fasse confiance à ce certificat.
Jusqu'à présent, j'ai réussi à l'importer dans
keytool -import -trustcacerts -noprompt -storepass changeit -alias $REMHOST -file $REMHOST.pem
keytool -import -trustcacerts -noprompt -keystore cacerts -storepass changeit -alias $REMHOST -file $REMHOST.pem
Pourtant, quand j'essaye de courir, HTTPSClient.class
j'obtiens toujours:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: la création du chemin PKIX a échoué: sun.security.provider.certpath.SunCertPathBuilderException: impossible de trouver un chemin de certification valide vers la cible demandée
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider())
sont complètement inutiles dans la première partie. Le second ne fait aucune vérification de certificat. Essayez avec une plaineURLConnection
pour commencer. Etes - vous sûr que vous avez modifiécacerts
danslib/security
de votre installation JRE? Avez-vous essayé l'trustmanager
option de débogage ?Réponses:
Sous Windows, le moyen le plus simple est d'utiliser le portecle du programme .
System.out.println(System.getProperty("java.home"));
Sous Linux:
Vous pouvez télécharger le certificat SSL à partir d'un serveur Web qui l'utilise déjà comme ceci:
Vérifiez éventuellement les informations du certificat:
Importez le certificat dans le keystore Java cacerts:
la source
ps -ef | grep java
ce qui m'a dit que mon java fonctionnait depuis openjdk situé dans / usr / lib / jvm / java-openjdk / bin / java. Aussi, si c'est pour une application Web, n'oubliez pas de redémarrer. Merci pour l'aide!!la source
J'ai fini par écrire un petit script qui ajoute les certificats aux keystores, donc c'est beaucoup plus facile à utiliser.
Vous pouvez obtenir la dernière version sur https://github.com/ssbarnea/keytool-trust
''
la source
Cela a fonctionné pour moi. :)
la source
Si vous utilisez un certificat signé par une autorité de certification qui n'est pas inclus par défaut dans le fichier cacerts Java, vous devez effectuer la configuration suivante pour les connexions HTTPS. Pour importer des certificats dans des cacerts:
la source
La simple commande 'keytool' fonctionne également sous Windows et / ou avec Cygwin.
SI vous utilisez Cygwin, voici la commande modifiée que j'ai utilisée à partir du bas de la réponse "S.Botha":
Exécutez la commande keytool depuis l'intérieur, où vous fournissez le chemin vers votre nouveau Cert à la fin, comme ceci:
Remarquez, car si c'est sous Cygwin, vous donnez un chemin vers un programme non-Cygwin, donc le chemin est de type DOS et entre guillemets.
la source
Je pourrais vouloir essayer
Honnêtement, je n'ai aucune idée de l'endroit où il met votre certificat si vous venez d'écrire,
cacerts
donnez-lui simplement un chemin completla source
installer le certificat dans java linux
/ opt / jdk (version) / bin / keytool -import -alias aliasname -file certificate.cer -keystore cacerts -storepass mot de passe
la source
la source