Télécharger le certificat de serveur auto-signé

2

Résumé
Je dois télécharger un certificat auto-signé depuis un serveur pour créer un fichier .JKS à utiliser comme fichier de clés certifiées dans une application. Comment puis-je faire cela à partir d'un serveur Red Hat?

Ce que j'ai essayé
J'ai essayé d'utiliser openssl pour obtenir le certificat:

echo -n | openssl s_client -connect hostname.example.com:20000 -showcerts | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > downloadedcerts.cert

Cela échoue avec le message suivant:

verify error:num=19:self signed certificate in certificate chain

En effet, le certificat racine de ce serveur est auto-signé et non d'un CA. Cela me convient - le certificat racine appartient à un organisme gouvernemental de mon pays - mais openssl ne se connecte pas pour télécharger le certificat.

Il serait facile de charger l'URL dans Firefox, d'ignorer manuellement l'erreur de certificat et de télécharger le certificat, mais je ne peux pas me connecter au serveur à partir de mon ordinateur de bureau à cause des pare-feu.

Toute aide serait très appréciée :)

MW.
la source

Réponses:

2

erreur de vérification: num = 19: certificat auto-signé dans la chaîne de certificats

En effet, le certificat racine de ce serveur est auto-signé et non d'une autorité de certification.

C'est un CA, ce n'est tout simplement pas digne de confiance;)

Contrairement aux navigateurs (qui font presque tout), OpenSSL ne fait confiance à rien (vous devez lui dire en quoi faire confiance).


Téléchargez le certificat de CA de votre pays (généralement ne pas envoyé dans la chaîne). Ses ne pas envoyé dans la chaîne parce que c'est un point de confiance; vous devez déjà l'avoir et y faire confiance.

Vous pouvez généralement trouver le certificat de CA en ligne. Par exemple, ici est celle de DigiCert, ici est Verisign, etc. Vérifiez le certificat que vous téléchargez. La vérification est la partie la plus délicate - les navigateurs la résolvent en emportant leur propre paquet de certifques déjà vérifiés.

Placez le certificat de l'autorité de certification de votre pays dans son propre fichier. Ensuite, utilisez openssl s_client -connect hostname.example.com:20000 -CAfile my-country-ca.pem. s_client complétera avec Verify OK (0) ou similaire.

jww
la source
0

Je recommanderais de créer votre propre autorité de certification [EDIT - pas ce qui était souhaité. voir le paragraphe suivant]. Il s’agit d’une sorte de PITA et, lorsque vous faites une recherche sur la façon de le faire, cela semble plus difficile qu’il ne l’est réellement. Vous venez de constituer une société fictive dont vous allez mettre le certificat dans la racine de confiance des clients et qui sera en mesure de signer le (s) certificat (s) plutôt que d'utiliser des certificats auto-signés.

J'ai trouvé une explication dans la réponse de Bruno à cette question ici: https://stackoverflow.com/questions/4103472/ssl-handshake-fails-with-a-verisign-chain-certificate-that-contains-two-ca-s

Je n'avais pas pensé à un certificat racine comme étant auto-signé, mais c'est logique. Donc, si je comprends bien, vous obtenez le certificat que vous voulez (le premier), mais aussi tout le reste de la chaîne de certificats. Le certificat racine est celui qui a provoqué le message.

ZuberFowler
la source
Je ne crée pas le certificat moi-même. Il est créé par un organisme gouvernemental (qui gère également le serveur auquel je tente de me connecter). Je dois donc travailler avec le certificat existant.
MW.
Désolé de ne pas avoir cela quand j'ai "répondu" à la question. Je vais essayer à nouveau avec une modification.
ZuberFowler
"Je n'avais pas pensé à un certificat racine comme étant auto-signé" - Toutes les racines de CA publiques sont auto-signées. Cela signifie à la fois le Subject et Issuer sont identiques. La plupart (beaucoup?) De CA publics sont marqués comme CA=true,critical.
jww