openssl - error - ssl certificate problem: unable to get local issuer certificate curl
OpenSSL Verify return code: 20(no se puede obtener el certificado de emisor local) (8)
¿Está configurado su servidor para la autenticación del cliente? Si es así, debe pasar el certificado del cliente mientras se conecta con el servidor.
Estoy ejecutando Windows Vista y estoy tratando de conectarme a través de https para cargar un archivo en un formulario de varias partes, pero estoy teniendo problemas con el certificado de emisor local. Solo estoy tratando de descubrir por qué esto no funciona ahora, y volver a mi código cURL más tarde después de que esto se resuelva. Estoy ejecutando el comando:
openssl s_client -connect connect_to_site.com:443
Me da un certificado digital de VeriSign, Inc., pero también muestra un error:
Verify return code: 20 (unable to get local issuer certificate)
¿Cuál es el certificado de emisor local? ¿Es eso un certificado de mi propia computadora? ¿Hay alguna forma de evitar esto? He intentado usar el archivo -CAfile mozilla.pem pero todavía me da el mismo error.
Tuve el mismo problema y lo resolví al pasar la ruta a un directorio donde están almacenadas las claves de CA. En Ubuntu fue:
openssl s_client -CApath /etc/ssl/certs/ -connect address.com:443
Tuve el mismo problema en OSX OpenSSL 1.0.1i de Macports, y también tuve que especificar CApath como solución alternativa (y como se menciona en el informe de errores de Ubuntu, incluso una CApath no válida hará que se vea el archivo openssl en el directorio predeterminado). Curiosamente, conectarse al mismo servidor usando las funciones openssl de PHP (como se usa en PHPMailer 5) funcionó bien.
Con autenticación de cliente:
openssl s_client -cert ./client-cert.pem -key ./client-key.key -CApath /etc/ssl/certs/ -connect foo.example.com:443
Este error también ocurre si está utilizando un certificado autofirmado con un keyUsage
falta el valor keyCertSign
.
Solución: debe agregar explícitamente el parámetro -CAfile your-ca-file.pem
.
Nota: Intenté también param -CApath
mencionado en otras respuestas, pero no funciona para mí.
Explicación: El error al unable to get local issuer certificate
significa que el openssl
no conoce su unable to get local issuer certificate
CA raíz.
Nota: Si tiene un servidor web con más dominios , no olvide agregar también el parámetro -servername your.domain.net
. Este parámetro "establecerá el nombre de servidor de la extensión TLS en ClientHello". Sin este parámetro, la respuesta siempre contendrá el certificado SSL predeterminado (no el certificado, que coincida con su dominio).
Enfrenté el mismo problema. Se corrigió después de mantener el valor del sujeto del emisor en el certificado, ya que está sujeto al certificado de emisor.
así que por favor verifique "valor del sujeto del emisor en el certificado (cert.pem) == sujeto del emisor (CA.pem)"
openssl verify -CAfile CA.pem cert.pem
cert.pem: OK
ponga su CA y certificado raíz en / usr / share / ca-certificate o / usr / local / share / ca-certificate. Entonces
dpkg-reconfigure ca-certificates
o incluso reinstalar el paquete de certificado ca con apt-get.
Después de hacer esto, su certificado se recopila en la base de datos del sistema: /etc/ssl/certs/ca-certificates.crt
Entonces todo debería estar bien.