Comment afficher la liste des certificats de confiance par OpenSSL?
Que je comprends, tous les logiciels de travail avec X. 509 certificats peuvent avoir propre base de décider, si un certificat est de confiance ou pas.
Autant que je sache, OpenSSL juste consulte une liste (comme, par exemple, /etc/ssl/certs) et vérifie si le certificat est présent.
Est-il un moyen pour OpenSSL à la liste de tous les certificats qui il a confiance? Je sais que je peux consulter ce fichier moi-même (sur mon installation de OpenSSL), mais est-il une (installation-indépendant) pour obtenir la liste de confiance d'OpenSSL lui-même?
OriginalL'auteur Konstantin Shemyak | 2014-08-06
Vous devez vous connecter pour publier un commentaire.
Non, OpenSSL fiducies de rien par défaut. Vous devez vous demander à quoi faire confiance. Il y a même une rubrique FAQ couvrant: Pourquoi ne
<SSL programme>
fail avec un certificat de vérifier erreur?:Vous pouvez également tester votre connexion à Google pour voir comment OpenSSL se comporte:
Avis ci-dessus échoue car OpenSSL ne pas confiance GeoTrust CA Mondiale par défaut. En fait, il y a un autre point de confiance dans la chaîne et c'est Google Internet de l'Autorité G2.
Vous pouvez remédier à la situation en disant OpenSSL ce que pour la confiance. Ci-dessous, j'utilise
-CAfile
option avec Google Internet De L'Autorité G2:Ensuite, vous pouvez agir comme un navigateur en allant à friser et télécharger
cacert.pem
.cacert.pem
a beaucoup de CAs:Vous n'êtes pas tout à fait aussi mauvais que d'un navigateur avec ses centaines de CAs et des autorités de certification, mais vous êtes de plus près:
OpenSSL modèle de sécurité est en contraste à l'application web/navigateur de modèle de sécurité, où le navigateur exerce autour d'une liste de confiance des ancres ou des points de confiance connu que les Autorités de certification (Ac). Note: dans ce modèle, le mauvais CA pouvait prétendre à la certification d'un site, le navigateur serait pas plus sage.
Ce qui s'est passé dans le passé, et il aura de chances de se produire à nouveau dans l'avenir. Pour une bonne histoire de PKIX drôle d'affaires, voir CAcert de Risque de l'Histoire. Par exemple, vous savez Google Internet de l'Autorité G2 et GeoTrust CA Mondiale certifier les sites de Google. Il n'y a aucune raison pour qu'un Néerlandais CA appelé Diginotar à la demande de certifier eux, ou un Français Cyberdefense Agence de prétendre de les certifier.
Liées à des modèles de sécurité: un autre problème avec l'application web/navigateur de modèle, c'est vous ne peut pas package d'une ancre de confiance ou d'autorité de certification besoin pour votre application et de l'utiliser (en supposant que vous avez une confiance canal de distribution). Vos certificats obtient jeté dans le tas avec le CA Zoo. Les autres peuvent toujours se prétendre certifier votre site, et vous pouvez demander de certifier d'autres sites.
Le modèle de sécurité l'une des raisons pour les applications web sont relégués à faible valeur données. Les applications Web ne devraient pas manipuler de valeur moyenne ou de grande valeur des données parce que nous ne pouvons pas les contrôles de sécurité.
Pas nécessaire puisque la liste a 0 membres 🙂
Voir aussi Comment trouver le chemin pour openssl certificat de confiance?.
cert.pem
ou dans le sous-répertoirecerts/
. Source: Ce que les autorités de certification ne OpenSSL reconnaître?. Maintenant, il se peut que votre installation n'a rien dans ce répertoire, mais mon installation a uncert.pem
liés à une collection de Certificat racine de l'Autorité de certificats, de sorte que mes OpenSSL installation des fiducies de nombreux sites "automatiquement".OriginalL'auteur jww
J'ai récemment regardé cette question, et n'a trouvé aucun moyen d'obtenir OpenSSL à la liste de certificats de sa confiance ensemble. La meilleure façon que j'ai trouvée a été, comme vous le soulignez, "consulter ce fichier [/etc/ssl/certs] moi (sur mon installation de OpenSSL)".
Vous pouvez être plus à l'installation indépendante au sujet de trouver le répertoire qui OpenSSL consulte.
openssl version -d
imprime le chemin d'accès.OpenSSL regarde ici, un fichier nommé
cert.pem
et un sous-répertoirecerts/
. Les certificats qu'il y trouve sont traités comme approuvé paropenssl s_client
etopenssl verify
(source: l'article, Ce que les autorités de certification ne OpenSSL reconnaître?).Vous pouvez faire quelque chose comme:
Cette affiche tout le contenu des fichiers qui OpenSSL s'attend à contenir des certificats. Si vous voulez moins de la totalité du fichier, puis remplacez
cat
avec les commandes appropriées.OriginalL'auteur Jim DeLaHunt
Je suis me demande si cela a changé depuis sauteur avec slalom de réponse.
Si je la soumets:
$ openssl s_client -connect google.com:443
Il fonctionne correctement, extrait 4 total certs, et retourne:
Je crois que c'est parce que les serveurs doivent être configurés pour envoyer, avec le certificat, intermédiaire et des certificats racine qui sont nécessaires pour vérifier toute la chaîne, à droite?
Même ici. La racine cert est celui-ci:
depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA
. Il y a un fichier/etc/ssl/certs/GeoTrust_Global_CA.pem
sur mon système, qui sans doute fait OpenSSL confiance qu'implicitement. Intéressant de noter que-showcerts
n'est toujours pas réellement l'impression de cette racine cert.Ce qui se passe ici est que nous parlons de deux situations différentes. Si vous installer OpenSSL à partir de la source, vous n'avez pas installé un magasin de certificats de confiance. Si vous utilisez votre distro gestionnaire de paquets, de la distribution d'emballage comprend probablement une dépendance sur n'importe quel ensemble de certificats de la distro responsables ont décidé de faire confiance, de sorte que vous obtenir un peuplé de trust store. Un serveur peut envoyer une pile de certificats qui forme son chemin de vérification, mais le client ne devrait pas approuver le certificat racine dans la pile, car il pourrait être de n'importe où, pas nécessairement quelque part vous confiance.
OriginalL'auteur em_bo