修复CURL(51)SSL错误:没有替代证书主题名称匹配

  发布于 2023-02-07 14:43

我是CURL世界的新手,来自Windows + .NET域.

尝试访问Rest API以进行基本身份验证,网址为http://www.evercam.io/docs/api/v1/authentication.

curl -X GET https://api.evercam.io/v1/... \
-u {username}

成功完成CURL后,不知道如何在Windows命令提示符下使用此命令.经过测试的CURL如下:

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

现在我以此结束

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'

如何修复此SSL问题51错误?

3 个回答
  • 证书中的通用名称api.evercam.io是for,*.herokuapp.com并且证书中没有替代主题名称.这意味着证书api.evercam.io与主机名不匹配,因此证书验证失败.与true相同www.evercam.io,例如使用浏览器尝试https://www.evercam.io并收到错误消息,证书中的名称与主机名不匹配.

    所以这是一个需要由evercam.io修复的问题.如果您不关心安全性,中间人攻击等,您可能会禁用证书验证(curl --insecure),但是您应该问自己为什么要使用https而不是http.

    2023-02-07 14:44 回答
  • 我知道这是一个(非常)陈旧的问题而且它是关于命令行的,但是当我搜索Google"SSL:没有替代证书主题名称与目标主机名匹配"时,这是第一次点击.

    我花了很长时间才弄清楚答案,所以希望这能节省很多时间!在PHP中将此添加到您的cUrl setopts:

    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
    

    ps:这应该是一个临时解决方案.由于这是证书错误,最好的办法是将证书固定好!

    2023-02-07 14:44 回答
  • 如果您想关闭curl对证书的验证,请使用-k(或--insecure)选项.

    更多信息可以在这里找到:http://curl.haxx.se/docs/sslcerts.html

    2023-02-07 14:44 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有