Eu sou novo no mundo CURL, vindo do domínio Windows + .NET.
Tentando acessar a API Rest para autenticação básica em http://www.evercam.io/docs/api/v1/authentication .
curl -X GET https://api.evercam.io/v1/... \
-u {username}
Não sei como usar este comando no prompt de comando do Windows depois de configurar o CURL com êxito. CURL testado da seguinte forma:
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
Agora estou terminando com isso
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'
Como posso corrigir esse erro de problema de SSL 51?
*.my-domain.com
que não se aplicavadev.subdomain.my-domain.com
. Mas funciona bem paradev-subdomain.my-domain.com
. Então, para fazer com que vários subdomínios funcionem, talvez você precise do que este artigo diz - sslshopper.com/…Nota do editor: esta é uma abordagem muito perigosa, se você estiver usando uma versão do PHP antiga o suficiente para usá-la. Ele abre seu código para ataques man-in-the-middle e remove uma das finalidades principais de uma conexão criptografada. A capacidade de fazer isso foi removida das versões modernas do PHP porque é muito perigoso. A única razão pela qual isso foi votado 70 vezes é porque as pessoas são preguiçosas. NÃO FAÇA ISSO.
Eu sei que é uma pergunta (muito) antiga e é sobre linha de comando, mas quando eu pesquisei no Google por "SSL: nenhum nome de assunto de certificado alternativo corresponde ao nome do host de destino", esta foi a primeira resposta.
Levei um bom tempo para descobrir a resposta, então espero que isso economize muito tempo para alguém! Em PHP, adicione aos seus setopts cUrl:
ps: esta deve ser uma solução temporária. Como se trata de um erro de certificado, o melhor é que o certificado seja corrigido, é claro!
fonte
CURLOPT_SSL_VERIFYHOST
foi o suficiente no meu casoO nome comum no certificado para
api.evercam.io
é para*.herokuapp.com
e não há nomes de assunto alternativos no certificado. Isso significa que o certificado paraapi.evercam.io
não corresponde ao nome do host e, portanto, a verificação do certificado falha. O mesmo vale parawww.evercam.io
, por exemplo, tente https://www.evercam.io com um navegador e você obterá a mensagem de erro, de que o nome no certificado não corresponde ao nome do host.Portanto, é um problema que precisa ser corrigido pelo evercam.io. Se você não se preocupa com segurança, ataques man-in-the-middle etc, você pode desabilitar a verificação do certificado (
curl --insecure
), mas então você deve se perguntar por que usa https em vez de http.fonte
isso pode economizar algum tempo para alguém.
Se você usa GuzzleHttp e se depara com esta mensagem de erro cURL error 60: SSL: nenhum nome de assunto do certificado alternativo corresponde ao nome do host de destino e você está satisfeito com a solução 'insegura' (não recomendada na produção), então você deve adicionar
\GuzzleHttp\RequestOptions::VERIFY => false
ao cliente configuração:que define
CURLOPT_SSL_VERIFYHOST
como 0 eCURLOPT_SSL_VERIFYPEER
falso noCurlFactory::applyHandlerOptions()
métodoDa documentação GuzzleHttp
fonte
Como diz o código de erro, "nenhum nome de assunto de certificado alternativo corresponde ao nome de host de destino" - portanto, há um problema com o certificado SSL.
O certificado deve incluir SAN e apenas SAN será usado. Alguns navegadores ignoram o nome comum obsoleto.
O RFC 2818 afirma claramente "Se uma extensão subjectAltName do tipo dNSName estiver presente, ela DEVE ser usada como a identidade. Caso contrário, o campo Nome Comum (mais específico) no campo Assunto do certificado DEVE ser usado. Embora o uso do Common O nome é uma prática existente, está obsoleto e as autoridades de certificação são incentivadas a usar o dNSName em seu lugar. "
fonte
Eu tive o mesmo problema. No meu caso, eu estava usando digitalocean e nginx.
Primeiro configurei um domínio example.app e um subdomínio dev.exemple.app em digitalocean. Em segundo lugar, comprei dois certificados SSL do godaddy. E, por fim, configurei dois domínios no nginx para usar esses dois certificados SSL com o seguinte snipet
Minha configuração de domínio example.app
Meu dev.example.app
Quando estava lançando https://dev.echantillonnage.app , estava recebendo
Meu erro foram as duas linhas abaixo
Tive que mudar isso para:
fonte