J'essaie de mettre à jour le certificat SSL conformément à cet article .
Je suis noob en certificats, alors j'ai suivi ce guide . Mais quand j'entre
keytool -keystore mycacerts -storepass changeit -importcert -file "C:\Users\Noks\Desktop\cacerts.pem" -v
Je reçois l'erreur:
keytool error: Java.lang.Exception: Input not an X.509 certificate
Java.lang.Exception: Input not an X.509 certificate
at Sun.security.tools.KeyTool.addTrustedCert(KeyTool.Java:1913)
at Sun.security.tools.KeyTool.doCommands(KeyTool.Java:818)
at Sun.security.tools.KeyTool.run(KeyTool.Java:172)
at Sun.security.tools.KeyTool.main(KeyTool.Java:166)
Comment puis-je réparer ça?
Votre fichier cacerts.pem contient-il un seul certificat? Comme il s’agit d’un PEM, regardez-le, il faut commencer par
-----BEGIN CERTIFICATE-----
et se termine par
-----END CERTIFICATE-----
Enfin, pour vérifier qu’il n’est pas corrompu, procurez-vous openssl et imprimez ses détails à l’aide de
openssl x509 -in cacerts.pem -text
De nombreuses autorités de certification fourniront un certificat au format PKCS7.
Selon documentation Oracle , la commande keytool peut gérer PKCS # 7 mais parfois elle échoue
La commande keytool peut importer des certificats X.509 v1, v2 et v3, ainsi que des fichiers Chaînes de certificats au format PKCS # 7 consistant en certificats de cette type. Les données à importer doivent être fournies en binaire format de codage ou au format de codage imprimable (également appelé codage Base64 ) défini par la norme Internet RFC 1421. Dans ce dernier Dans ce cas, le codage doit être limité au début par une chaîne qui commence par ----- BEGIN et est limité à la fin par une chaîne de caractères commençant par avec ----- FIN.
Si le fichier PKCS7 ne peut pas être importé, essayez de le transformer de PKCS7 à X.509:
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
Cela semble être un vieux fil, mais je vais ajouter mon expérience ici. J'ai essayé d'installer un cert aussi et j'ai eu cette erreur. J'ai ensuite ouvert le fichier cer avec un éditeur de texte et ai remarqué qu'il y avait un espace supplémentaire (caractère) à la fin de chaque ligne. Supprimer ces lignes m'a permis d'importer le certificat.
J'espère que cela vaut quelque chose à quelqu'un d'autre.
J'ajouterai également mon expérience ici au cas où cela aiderait quelqu'un:
Au travail, nous utilisons couramment les deux commandes suivantes pour permettre à IntelliJ IDEA de communiquer avec différents serveurs, par exemple nos référentiels maven internes:
[Elevated]C:\Program Files\JetBrains\IntelliJ IDEA {version}\jre64>bin\keytool
-printcert -rfc -sslserver maven.services.{our-company}.com:443 > public.crt
[Elevated]C:\Program Files\JetBrains\IntelliJ IDEA {version}\jre64>bin\keytool
-import -storepass changeit -noprompt -trustcacerts -alias services.{our-company}.com
-keystore lib\security\cacerts -file public.crt
Or, il arrive parfois que la commande keytool -printcert
ne puisse pas communiquer avec le monde extérieur en raison de problèmes de connectivité temporaires, tels que le pare-feu qui l’empêche, l’utilisateur a oublié de démarrer son VPN, peu importe. C'est un fait de la vie que cela puisse arriver. Ce n'est pas vraiment le problème.
Le problème est que lorsque l'outil stupide rencontre une telle erreur, il n'émet pas le message d'erreur sur le périphérique d'erreur standard, mais sur le périphérique de sortie standard!
Alors voici ce qui finit par arriver:
public.crt
contient désormais un message d'erreur disant keytool error: Java.lang.Exception: No certificate from the SSL server
.public.crt
. Il échoue donc en indiquant keytool error: Java.lang.Exception: Input not an X.509 certificate
.La ligne du bas est: après keytool -printcert ... > public.crt
toujours vider le contenu de public.crt
pour s’assurer qu’il s’agit bien d’une clé et non d’un message d’erreur avant de continuer à exécuter keytool -import ... -file public.crt