vigencia verificar valido validar tiene sitio seguridad saber linea gratuito como certificado curl nginx ssl-certificate self-signed

verificar - ¿Por qué no curl reconoce un certificado SSL autofirmado?



verificar certificado ssl (1)

Cuando utilizamos cURL para recuperar un sitio HTTPS que no utiliza un certificado firmado por CA, se produce el siguiente problema.

curl https://example.selfip.com 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

Por supuesto, esto simplemente puede superarse mediante el uso de la opción -k.

La solución:

Paso 1
Identifique qué directorio utiliza su instalación de OpenSSL.

root@ubuntu:~# openssl version -d OPENSSLDIR: "/usr/lib/ssl"

Paso 2
Cambie a ese directorio y liste el contenido del directorio. Debería ver un directorio llamado "certs".

root@ubuntu:~# cd /usr/lib/ssl && ls -al

Paso 3
Cambia a ese directorio.

root@ubuntu:/usr/lib/ssl# cd certs

Lista los contenidos del directorio. Debería ver en los enlaces simbólicos que los certificados se almacenan realmente en /usr/share/ca-certificates .

Etapa 4
Cambie al directorio /usr/share/ca-certificates y añádale un certificado autofirmado allí (por ejemplo: your.cert.name.crt)

Paso 5
Cambie al directorio /etc y edite el archivo ca-certificates.conf .

root@ubuntu:# cd /etc root@ubuntu:# nano ca-certificates.conf

Agregue your.cert.name.crt al archivo ( ca-certificates.conf ) y guárdelo.

Último paso:

Ejecute el programa update-ca-certificates –fresh .
Nota: es posible que desee hacer una copia de seguridad de /etc/ssl/certs antes de ejecutar el comando.

root@ubuntu:# update-ca-certificates --fresh Clearing symlinks in /etc/ssl/certs...done. Updating certificates in /etc/ssl/certs....done. Running hooks in /etc/ca-certificates/update.d....done.

Pruebe con curl en su sitio HTTPS objetivo y debería funcionar ahora.

Fuente

Copié el archivo PEM en / usr / local / share / ca-certificates / y ejecuté update-ca-certificates, y verifiqué que el certificado resultante ahora se incluye en /etc/ssl/certs/ca-certificates.crt que es el archivo impreso por curl-config --ca. También verifiqué que el certificado impreso por openssl s_client -connect example.com:443 era idéntico a mi archivo PEM. Y, sin embargo, sigo obteniendo el mensaje "error: 14090086: rutinas SSL: SSL3_GET_SERVER_CERTIFICATE: verificación de verificación fallida". Esto sucede incluso si uso la opción de curl --cacert como se describe en http://curl.haxx.se/docs/sslcerts.html para indicarle qué certificado usar.

Funciona si deshabilito la verificación de certificados por completo con curl -k, pero no quiero hacerlo porque estoy tratando de escribir un arnés de prueba que se supone que debe probar el SSL correctamente.

Funciona bien si tengo acceso a la misma URL en lynx, que normalmente se queja si hay algún error SSL. Pero no puedo usar Lynx para este arnés de prueba, a menos que encuentre la manera de que el AsyncHTTPClient de Tornado use Lynx en lugar de libcurl. Y no parece tener sentido que la instalación del certificado autofirmado cumpla con Lynx, pero no con curl.

Estoy usando Ubuntu 12.04 LTS en un VirtualBox con Vagrant; tiene curl 7.22.0. El proxy de terminación SSL es nginx / 1.3.13 ejecutándose en la misma máquina, y el nombre de dominio apunta a 127.0.0.1 mediante una entrada en / etc / hosts.

¿Alguna pista sobre cuál podría ser el problema? Gracias.