证书域名与访问的域名不一致

  • 问题:curl SSL: certificate subject name 'luffichen_server.tencent.com' does not match target host name '127.0.0.1'
  • 原因:这是因为 curl 访问 https 服务器时,会验证服务器证书的有效性和证书域名与访问域名一致性
  • 解决方法:

(1) 修改 curl 选项,使其不验证服务器证书

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

(2) 针对 curl 命令,-k 选项,也可以使其不验证证书

(3) 保证证书域名与访问的域名一致,因为访问的是一个 IP,在 hosts 文件添加IP域名关系映射,然后使用服务器证书的域名进行访问

  • 参考:
  1. https://curl.haxx.se/libcurl/c/CURLOPT_SSL_VERIFYHOST.html
  2. https://stackoverflow.com/questions/20842970/fix-curl-51-ssl-error-no-alternative-certificate-subject-name-matches

CA 证书不存在

  • 问题:curl: (60) SSL certificate : unable to get local issuer certificate
  • 原因:在验证服务器证书时,CA 证书不存在
  • 解决方法:

因为你指定了要验证服务器证书有效性,那么需要指定 CA 证书或者使用 curl 默认证书(https://curl.haxx.se/docs/caextract.html,haxx.se had a bundle of all sorts of CA certs,但不会有你服务器的自签证书,这个需要自己指定了)

// 指定 CA 证书路径
curl_easy_setopt(m_curl_handler, CURLOPT_CAINFO, m_ca_cert_file.c_str());
  • 参考:
  1. https://stackoverflow.com/questions/24611640/curl-60-ssl-certificate-unable-to-get-local-issuer-certificate
  2. https://curl.haxx.se/libcurl/c/CURLOPT_CAINFO.html
  3. https://github.com/openssl/openssl/issues/2833
  4. https://my.oschina.net/lemonzone2010/blog/467213(未验证)

CA 证书不正确

  • 问题: ssl peer certificate or ssh remote key was not ok
  • 原因:在验证服务器证书时,CA 证书不正确,比如使用错了证书

无法设置私钥

  • 问题:curl: (58) unable to set private key file
  • 原因:错误的原因有很多,当时我的私钥是带密私钥,密码输错了,导致后面的验证失败

访问 HTTPS 服务器报SSL_ERROR_SYSCALL

  • 问题:curl -k 一个 https 服务器时,发现 curl 连接失败,并返回 curl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to 127.0.0.1:39000
  • 原因:错误原因可能很多,我这里curl 已经带上 -k 选项,客户端不验服务器证书了,后来发现是因为服务器侧的问题导致的,未设置服务器私钥
  • 解决方法:
httpd.socket = ssl.wrap_socket (httpd.socket, certfile=CERTFILE,keyfile=KEYFILE, server_side=True)
# 问题代码: httpd.socket = ssl.wrap_socket (httpd.socket, certfile=CERTFILE, server_side=True)

SSL certificate problem, verify that the CA cert is OK

CURLOPT_SSL_VERIFYPEER 为 1 时,表示启用了验证访问的服务器合法性,且必须设置 CURLOPT_CAINFOCURLOPT_CAPATH 其中一个,而 CURLOPT_SSL_VERIFYHOST 为 2 时,表示验证 CA 证书中的 common name 是否与访问的服务器域名是否一致。在测试的时候,需要记得为客户端侧机器添加相应的 host 域名 IP 解析,如果直接使用 IP 访问也会报 SSL certificate problem, verify that the CA cert is OK 错误。

curl: (60) SSL certificate : unable to get local issuer certificate

问题的原因有很多,这里只列举一二。

在验证服务器证书时,找不到CA证书,如果正确设置了 cainfo 或 capath 参数且 CA 证书已经是 rootCA,依然出错,那么可能是证书生成的时候出错,再重新生成一个;如果 CA 证书由一个中间证书签发,rootCA 签发中间证书,那么如果服务器没有提供中间证书,在验证过程中,openssl 在形成完整的证书链也会报这个错误,所以 cat intermediate.crt >> domain.crt 将所有中间证书与rootCA证书捆绑在一起。

curl 错误总结的更多相关文章

  1. php - 如何解决CURL错误( 7 ): 无法连接到主机?

    php - 如何解决CURL错误( 7 ): 无法连接到主机? 1. 问题描述 调用第三方接口,本地调用一切ok,线上调用失败! 本地通过curLRequest()方法调用第三方接口时,curl_er ...

  2. PHP中cURL错误号对照[转]

    PHP cURL curl_errno 在php程序编写中,使用curl函数库的几率还是挺高的,如curl_init().curl_setopt().curl_exec().curl_errno()等 ...

  3. yaourt 之 Curl 错误

    最近执行 yaourt 更新时总是出现以下错误: curl error: Couldn't connect to server 无法进行更新.把配置中的下载工具更换了成 axel 等其它下载工具,还是 ...

  4. curl 错误 [globbing] illegal character in range specification at pos

    现象 在使用curl 进行ipv6请求的时候 curl -v "http://[1:1::1]/test.html" 发生了一个错误,报错是 [globbing] illegal ...

  5. window 10 用composer安装 基于 Laravel 5.3 的 Coaster CMS Curl错误77解决

    安装教程来自 http://laravelacademy.org/post/6547.html 1.系统环境windows 10 nodejs3.9.2 composer1.2.4(国内镜像) Cmd ...

  6. PHP CURL错误: error:140943FC

    使用PHP访问https网站的时候,间歇性会报error:140943FC错误.google之,通过如下方案可处理: 1.服务器ssl版本较高 curl_setopt($this->curl, ...

  7. 系统不支持curl

    解决安装pinphp时出现的“系统不支持curl!”   今天在本机安装phppin开源程序时,提示“系统不支持curl!”错误. 由于我本机是UBUNTU系统,所以直接通过apt-get进行安装. ...

  8. php curl request

    /** * @desc curl request请求 * @date 2016-12-07 16:26:55 * * @param $arguments * * @return bool|mixed ...

  9. pycurl,Python cURL library

    pycurl — A Python interface to the cURL library Pycurl包是一个libcurl的Python接口.pycurl已经成功的在Python2.2到Pyt ...

随机推荐

  1. php 记录日志时 基础的日志格式

     2019-02-19 11:29:56  /api/shop/shopManagements?shopId=undefined REQUEST:HTTP://mutest.drcloud.cn/mo ...

  2. vue常用属性

    关键词:filters  | 自定义过滤器 (首字母大写) <p>{{ msg | capitalize }}</p> filters: { capitalize: funct ...

  3. 找一个数组的最大和的连续子数组(时间复杂度 O(n))

    设计思想 一开始的思想是求出全部的情况,再分别比较大小,这种方法适用于有限个数组,不适用于输入数组长度和内容的情况. 但也试着做了 int a[]= {-1,2,6,-10}; int size=4; ...

  4. SpringMVC的配置和使用

    SpringMVC的配置和使用 什么是SpringMVC? SpringMVC是Spring家族的一员,Spring是将现在开发中流行的组件进行组合而成的一个框架!它用在基于MVC的表现层开发,类似于 ...

  5. Shadow Copying导致ASP.NET应用启动很慢的解决办法

    What's Shadow Copying? 我们安装一个应用程序并启动后,我们是无法更新应用程序安装目录中程序集文件的.如果强制替换会提示文件正在使用,如下图所示. 那你可能会问,为什么会无法更新呢 ...

  6. Lesson 25 Do the English speak English?

    Text I arrived London at last. The railway station was big, black and dark. I did not know the way t ...

  7. kali linux 网络渗透测试学习笔记(二)OWASP ZAP工具扫描SQL injection漏洞失败

    按照惯例,利用OWASP ZAP工具扫描SQL injection漏洞时,应该很快就可以扫描出来,但是在笔者进行扫描的时候,却遇到了以下状况: 这说明了该工具根本就没能够扫描出SQL注入的漏洞,不知道 ...

  8. 最小可用id

    题目:在非负数组(乱序)中找到最小的可分配的id(从1开始编号),数据量10000000. 题目解读:在一个不重复的乱序的自然数组中找到最小的缺失的那个数,比如1,2,3,6,4,5,8,11.那么最 ...

  9. [Swift]LeetCode75. 颜色分类 | Sort Colors

    Given an array with n objects colored red, white or blue, sort them in-place so that objects of the ...

  10. [Swift]LeetCode77. 组合 | Combinations

    Given two integers n and k, return all possible combinations of k numbers out of 1 ... n. Example: I ...