Soy nuevo en el mundo CURL, vengo del dominio Windows + .NET.
Intentando acceder a la API Rest para la autenticación básica en http://www.evercam.io/docs/api/v1/authentication .
curl -X GET https://api.evercam.io/v1/... \
-u {username}
No sé cómo usar este comando en el símbolo del sistema de Windows después de haber configurado CURL correctamente. Probado CURL de la siguiente manera:
C:\>curl --version
curl 7.33.0 (x86_64-pc-win32) libcurl/7.33.0 OpenSSL/0.9.8y zlib/1.2.8 libssh2/1.4.3
Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp scp s
ftp smtp smtps telnet tftp
Features: AsynchDNS GSS-Negotiate Largefile NTLM SSL SSPI libz
Ahora termino con esto
C:\>curl -u myuser:mypassword -X GET https://api.evercam.io/v1/
curl: (51) SSL: no alternative certificate subject name matches target host name 'api.evercam.io'
¿Cómo puedo solucionar este error del problema 51 de SSL?
*.my-domain.com
que no se aplicabadev.subdomain.my-domain.com
. Pero funciona bien paradev-subdomain.my-domain.com
. Entonces, para hacer que varios subdominios funcionen, tal vez necesite lo que dice este artículo - sslshopper.com/…Nota del editor: este es un enfoque muy peligroso, si está utilizando una versión de PHP lo suficientemente antigua para usarlo. Abre su código a ataques man-in-the-middle y elimina uno de los propósitos principales de una conexión cifrada. La capacidad de hacer esto se ha eliminado de las versiones modernas de PHP porque es muy peligroso. La única razón por la que se ha votado a favor 70 veces es porque la gente es vaga. NO HAGAS ESTO.
Sé que es una pregunta (muy) antigua y se trata de la línea de comandos, pero cuando busqué en Google "SSL: ningún nombre de sujeto de certificado alternativo coincide con el nombre de host de destino", este fue el primer resultado.
Me tomó un buen tiempo encontrar la respuesta, ¡así que espero que esto le ahorre a alguien mucho tiempo! En PHP agregue esto a sus setopts cUrl:
ps: esto debería ser una solución temporal. Dado que se trata de un error de certificado, ¡lo mejor es arreglar el certificado, por supuesto!
fuente
CURLOPT_SSL_VERIFYHOST
fue suficiente en mi casoEl nombre común en el certificado
api.evercam.io
es para*.herokuapp.com
y no hay nombres de sujeto alternativos en el certificado. Esto significa que el certificado paraapi.evercam.io
no coincide con el nombre de host y, por lo tanto, la verificación del certificado falla. Igual que cierto parawww.evercam.io
, por ejemplo, intente https://www.evercam.io con un navegador y obtendrá el mensaje de error, que el nombre en el certificado no coincide con el nombre de host.Por lo tanto, es un problema que debe solucionarse con evercam.io. Si no le importa la seguridad, los ataques man-in-the-middle, etc., puede desactivar la verificación del certificado (
curl --insecure
), pero luego debe preguntarse por qué usa https en lugar de http.fuente
podría ahorrarle algo de tiempo a alguien.
Si usa GuzzleHttp y se enfrenta a este mensaje de error cURL error 60: SSL: ningún nombre de sujeto de certificado alternativo coincide con el nombre de host de destino y está de acuerdo con la solución 'insegura' (no recomendada en producción), entonces debe agregarla
\GuzzleHttp\RequestOptions::VERIFY => false
al cliente configuración:que se establece
CURLOPT_SSL_VERIFYHOST
en 0 yCURLOPT_SSL_VERIFYPEER
en falso en elCurlFactory::applyHandlerOptions()
métodoDe la documentación de GuzzleHttp
fuente
Como dice el código de error, "ningún nombre de sujeto de certificado alternativo coincide con el nombre de host de destino", por lo que hay un problema con el certificado SSL.
El certificado debe incluir SAN y solo se utilizará SAN. Algunos navegadores ignoran el nombre común obsoleto.
RFC 2818 establece claramente: "Si hay una extensión subjectAltName de tipo dNSName, DEBE utilizarse como identidad. De lo contrario, DEBE utilizarse el campo Common Name (más específico) en el campo Asunto del certificado. Aunque el uso del Common El nombre es una práctica existente, está en desuso y se recomienda a las autoridades de certificación que utilicen dNSName en su lugar ".
fuente
Tuve el mismo problema. En mi caso, estaba usando digitalocean y nginx.
Primero configuré un dominio example.app y un subdominio dev.exemple.app en digitalocean. En segundo lugar, compré dos certificados SSL de godaddy. Y finalmente, configuré dos dominios en nginx para usar esos dos certificados ssl con el siguiente fragmento
Mi configuración de dominio example.app
Mi dev.example.app
Cuando estaba lanzando https://dev.echantillonnage.app , estaba obteniendo
Mi error fueron las dos líneas de abajo
Tuve que cambiar esto a:
fuente