J'ai besoin de télécharger un certificat SSL d'un serveur distant (pas HTTPS, mais la négociation SSL doit être identique à Google Chrome/IE/wget et curl toutes les erreurs d'échec de vérification de certificat) et ajouter le certificat en tant que j'ai confiance dans le magasin de certificats de Windows de mon ordinateur portable, car je ne parviens pas à demander à mon équipe informatique de me donner le certificat CA.
c'est pour les communications de bureau donc je ne peux pas vraiment utiliser le client réel pour obtenir le cert.
Comment puis-je faire cela, j'ai Windows 7 et une pile de Linux à portée de main, donc tout outil/langage de script convient.
Si vous avez accès à OpenSSL, essayez
openssl s_client -connect {HOSTNAME}:{PORT} -showcerts
en remplaçant {HOSTNAME} et {PORT} par vos valeurs.
Une méthode rapide pour extraire et télécharger le certificat consiste à exécuter la commande suivante qui dirige la sortie de -showcerts vers la commande x509 ssl, qui supprime simplement tout ce qui est étranger. Par exemple:
openssl s_client -showcerts -connect server.edu:443 </dev/null 2>/dev/null|openssl x509 -outform PEM >mycertfile.pem
Pour utiliser le certificat, avec wget,
wget https:/server.edu:443/somepage --ca-certificate=mycertfile.pem
Pour être honnête, je n'ai jamais essayé cela auparavant (jamais eu besoin de), cependant, je viens d'essayer dans Firefox et cela semble fonctionner pour la sauvegarde:
View Certificate
Details
Export
Exportation d'un certificat à l'aide du navigateur Chrome
2. Cliquez sur le symbole de cadenas puis sur Détails.
Depuis Chrome version 56, vous procédez comme suit: allez dans le menu Trois points -> Plus d'outils -> Outils de développement, puis cliquez sur l'onglet Sécurité. Cela vous donnera un Aperçu de la sécurité avec un Voir le certificat .
Cliquez sur le bouton Voir le certificat .
Une fenêtre modale s'ouvrira. Il a deux vitres. La partie supérieure affiche la hiérarchie de confiance du certificat du site (le dernier répertorié), le ou les certificats intermédiaires et le certificat racine (le plus élevé).
Le deuxième volet, plus grand, affiche les détails de l’un des certificats.
Il peut y avoir zéro ou plusieurs certificats intermédiaires.
Notez que le certificat racine a une icône avec une bordure dorée. Les autres ont une bordure bleue.
Voir la capture d'écran ci-dessous.
Pour exporter un certificat:
C'est la réponse de gbroiles , mais je voulais souligner que le projet cURL a une page avec quelques détails supplémentaires sur l'utilisation de openssl
pour enregistrer le certificat SSL du serveur distant:
openssl s_client -connect {HOSTNAME}: {PORT} | fichier de départ
QUIT
et appuyez sur la touche Entrée/Retour.Si vous voulez voir les données dans le certificat, vous pouvez utiliser:
openssl x509 -inform PEM -en certfile -text -out certdata
où certfile
est le certificat extrait de logfile
. Regardez dans certdata
.
automatique
-servername était requis pour obtenir le bon certificat de l'hôte virtuel sur notre serveur.
openssl s_client -showcerts -connect Host.name.com:443 -servername Host.name.com </dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > Host.name.com.pem
vous pouvez également convertir en certificat pour le bureau
openssl x509 -inform PEM -in Host.name.com.pem -outform DER -out Host.name.com.cer
la dernière partie consiste à l'ajouter à vos certificats, pas sûr sous Windows
pour mac porte-clés que j'ai utilisé, devrait être similaire ...
Sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain Host.name.com.cer
Cela donnera les résultats contenant les certificats uniquement
echo QUIT | \
openssl s_client -showcerts -connect hostname:port | \
awk '/-----BEGIN CERTIFICATE-----/ {p=1}; p; /-----END CERTIFICATE-----/ {p=0}' "