Para verificar si el certificado de google.com ha sido revocado, probé el siguiente comando:
curl https://www.google.com --cacert GeoTrust_Global_CA.pem --crlfile gtglobal.pem -v
, pero recibí el temido error "problema de certificado 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
Supongo que este error no es correcto, ya que Google debería tener un certificado válido.
¿Sabes cómo podría emitir un comando curl que haga esto correctamente?
Más detalles
Si se pregunta por qué usé esos archivos específicos (GeoTrust_Global_CA.pem y gtglobal.pem) en el comando curl, así es como procedí:
- Primero miré qué CA emitió el certificado para https://www.google.com . Resulta que es GeoTrust Global CA;
- Descargué el certificado raíz de GeoTrust Global CA desde aquí (este es el archivo GeoTrust_Global_CA.pem);
- Descargué la CRL (lista de revocación de certificados) correspondiente desde aquí (este es el archivo gtglobal.pem).
linux
certificate
curl
Claudiu
fuente
fuente
Respuestas:
Ese es mi guión cotidiano:
Ouput:
fuente
Aparentemente, no puede simplemente verificar un sitio con una sola solicitud simple. Consulte /programming/16244084/how-to-programmatic-check-if-a-certificate-has-been-revoked?lq=1 y preguntas relacionadas anteriores sobre stackoverflow.
curl tampoco funcionó para mí con las listas de revocación de certificados , ni en Windows ni en Linux. ¿Por qué deberías usar curl ? Openssl parece más apropiado:
Obtenemos
Entonces podemos inspeccionar algunos certificados:
grep crl
en la salida del comando anterior. Las partes interesantes son:Ahora podemos inspeccionar manualmente crl:
Ahora vemos una lista de certificados revocados. En mi humilde opinión, el uso de curl no es suficiente, se requiere otro programa para verificar los certificados. Al hacer un simple
vemos que curl no verifica las revocaciones (ni siquiera se conecta a los lugares relevantes). Solo dice
fuente
Aparentemente, este es un problema bastante común en Windows, como muestra esta pregunta en stackoverflow . Me refiero específicamente a la respuesta del usuario Артур Курицын, que cito aquí para su conveniencia:
Además, este artículo también podría ser útil.
fuente
Una forma en que encontré que funciona es similar a otras ya expuestas, solo que envía el resultado
dev/null
y es relativamente rápido de usar.curl -L -v -s https://www.google.de 1>/dev/null
fuente
curl
en Unix no se verifica (a menos que lo compile específicamente con una biblioteca SSL que lo haga automáticamente por usted).