首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么cURL不能识别一个自签名的ssl证书?

为什么cURL不能识别一个自签名的ssl证书?
EN

Stack Overflow用户
提问于 2018-04-16 07:57:02
回答 1查看 0关注 0票数 0

我将PEM文件复制到/ usr / local / share / ca-certificates /中,然后运行update-ca-certificates,并验证所产生的证书现在包含在/etc/ssl/certs/ca-certificates.crt中,它是由curl-config打印的文件--ca。我还验证了由openssl s_client -connect example.com:443打印的证书与我的PEM文件相同。然后我继续得到“错误:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败”消息。即使我使用curl的--cacert选项(如http://curl.haxx.se/docs/sslcerts.html中所述)来告诉它使用什么证书,也会发生这种情况。

如果我使用curl -k完全禁用了证书验证,但它不起作用,但我不想这样做,因为我正在尝试编写一个应该正确测试SSL的测试工具。

如果我在lynx中访问相同的URL,它会正常工作,如果存在任何SSL错误,它通常会投诉。但我不能仅仅使用Lynx来测试这个测试工具,除非我能找到某种方式让Tornado的AsyncHTTPClient使用Lynx而不是libcurl。并且安装自签名证书似乎没有任何意义,但可以满足Lynx而不是卷曲。

我在使用Vagrant的VirtualBox中使用Ubuntu 12.04 LTS; 它卷曲7.22.0。SSL终结代理是在同一台机器上运行的nginx / 1.3.13,并且域名通过/ etc / hosts中的条目指向127.0.0.1。

EN

回答 1

Stack Overflow用户

发布于 2018-04-16 17:01:01

当我们使用cURL检索未使用CA签名证书的HTTPS站点时,会出现以下问题。

代码语言:javascript
复制
curl https://example.selfip.com
curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
More details here: http://curl.haxx.se/docs/sslcerts.html

当然,这可以通过使用-k选项来克服。

解决方案:

步骤1 确定OpenSSL安装使用的目录。

代码语言:javascript
复制
root@ubuntu:~# openssl version -d
OPENSSLDIR: "/usr/lib/ssl"

步骤2 切换到该目录并列出目录内容。你应该看到一个名为“certs”的目录。

代码语言:javascript
复制
root@ubuntu:~# cd /usr/lib/ssl && ls -al

步骤3 切换到该目录。

代码语言:javascript
复制
root@ubuntu:/usr/lib/ssl# cd certs

列出目录内容。应该从符号链接中看到证书实际存储在中/usr/share/ca-certificates

步骤4 切换到/usr/share/ca-certificates目录并在其中添加自签名证书(例如:your.cert.name.crt)

步骤5 切换到/etc目录并编辑文件ca-certificates.conf

代码语言:javascript
复制
root@ubuntu:# cd /etc
root@ubuntu:# nano ca-certificates.conf

添加your.cert.name.crt到文件(ca-certificates.conf)并保存。

最后一步:

执行程序update-ca-certificates –fresh。 注意:可能希望/etc/ssl/certs在执行命令之前进行备份。

代码语言:javascript
复制
root@ubuntu:# update-ca-certificates --fresh
Clearing symlinks in /etc/ssl/certs...done.
Updating certificates in /etc/ssl/certs....done.
Running hooks in /etc/ca-certificates/update.d....done.

在目标HTTPS网站上进行卷曲测试,现在就可以运行。

资源

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100004420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档