web-dev-qa-db-fra.com

Comment enregistrer un certificat SSL de serveur distant localement sous forme de fichier

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.

296
Kimvais

Si vous avez accès à OpenSSL, essayez

openssl s_client -connect {HOSTNAME}:{PORT} -showcerts

en remplaçant {HOSTNAME} et {PORT} par vos valeurs.

296
gbroiles

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
219
elec3647

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:

  1. Cliquez sur l'icône de certificat SSL en haut/Cadenas en bas.
  2. Cliquez sur View Certificate
  3. Cliquez sur l'onglet Details
  4. Choisissez le certificat que vous voulez dans la hiérarchie [non encerclé dans l'image]
  5. Cliquez sur Export

alt text

121
William Hilsum

Exportation d'un certificat à l'aide du navigateur Chrome

  1. Connectez-vous au site en utilisant SSL ( https: // peu importe )

2. Cliquez sur le symbole de cadenas puis sur Détails.

  1. 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 .

  2. 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.

  3. Pour exporter un certificat:

    1. Cliquez d'abord sur l'icône du certificat dans la hiérarchie des relations de confiance.
    2. Le certificat sera affiché dans la partie principale du modal.
    3. Cliquez sur la grande icône du certificat dans la partie principale du modal. Faites glisser l’icône sur votre bureau. Chrome copiera ensuite le certificat sur votre bureau.

 enter image description here

47
Larry K

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
  • Tapez QUIT et appuyez sur la touche Entrée/Retour.
  • Le certificat sera répertorié entre les marqueurs "BEGIN CERTIFICATE" et "END CERTIFICATE".
  • Si vous voulez voir les données dans le certificat, vous pouvez utiliser:

    openssl x509 -inform PEM -en certfile -text -out certdata

    certfile est le certificat extrait de logfile. Regardez dans certdata.

19
Daniel Trebbien

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

15
Artistan

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}' "
1