Pour vérifier si le certificat de google.com a été révoqué, j'ai essayé la commande suivante:
curl https://www.google.com --cacert GeoTrust_Global_CA.pem --crlfile gtglobal.pem -v
, mais j'ai eu l'erreur redoutée de "problème de certificat SSL":
* About to connect() to www.google.com port 443 (#0)
* Trying 81.24.29.91... connected
* successfully set certificate verify locations:
* CAfile: GeoTrust_Global_CA.pem
CApath: /etc/ssl/certs
* successfully load CRL file:
* CRLfile: gtglobal.pem
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS alert, Server hello (2):
* SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
* Closing connection #0
curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
More details here: http://curl.haxx.se/docs/sslcerts.html
Je suppose que cette erreur n'est pas correcte, car Google devrait avoir un certificat valide.
Savez-vous comment je pourrais émettre une commande curl qui fait cela correctement?
Plus de détails
Si vous vous demandez pourquoi j'ai utilisé ces fichiers spécifiques (GeoTrust_Global_CA.pem et gtglobal.pem) dans la commande curl, voici comment j'ai procédé:
- J'ai d'abord regardé ce que CA a délivré le certificat pour https://www.google.com . Il s'avère que c'est GeoTrust Global CA;
- J'ai téléchargé le certificat racine de GeoTrust Global CA à partir d' ici (il s'agit du fichier GeoTrust_Global_CA.pem);
- J'ai téléchargé la liste de révocation de certificats correspondante ( ici) (c'est le fichier gtglobal.pem).
linux
certificate
curl
Claudiu
la source
la source
Réponses:
Voilà mon scénario de tous les jours:
Sortie:
la source
Apparemment, vous ne pouvez pas simplement vérifier un site avec une seule demande simple. Voir /programming/16244084/how-to-programmatically-check-if-a-certificate-has-been-revoked?lq=1 et les questions connexes plus anciennes sur stackoverflow.
curl ne fonctionnait pas avec les listes de révocation de certificats pour moi non plus, ni sur Windows, ni sur Linux. Pourquoi devriez-vous utiliser curl ? Openssl semble plus approprié:
On a
Ensuite, nous pouvons inspecter certains certificats:
grep crl
dans la sortie de la commande ci-dessus. Les parties intéressantes sont:Maintenant, nous pouvons inspecter manuellement crl:
Nous voyons maintenant une liste de certificats révoqués. À mon humble avis, l'utilisation de curl ne suffit pas, un autre programme est nécessaire pour vérifier les certificats. En faisant un simple
nous voyons que curl ne vérifie pas les révocations (pas même la connexion aux endroits appropriés). Ça dit juste
la source
Apparemment, c'est un problème assez courant sur Windows, comme le montre cette question sur stackoverflow . Je me réfère spécifiquement à la réponse de l'utilisateur Артур Курицын, que je cite ici pour votre commodité:
En outre, cet article peut également être utile.
la source
Une façon que j'ai trouvé de travailler est similaire à d'autres déjà exposées, seulement elle envoie la sortie
dev/null
et elle est relativement rapide à utiliser.curl -L -v -s https://www.google.de 1>/dev/null
la source
curl
sur Unix ne vérifie pas (sauf si vous le compilez spécifiquement avec une bibliothèque SSL qui le fait automatiquement pour vous).