我将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。
发布于 2018-04-16 17:01:01
当我们使用cURL检索未使用CA签名证书的HTTPS站点时,会出现以下问题。
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安装使用的目录。
root@ubuntu:~# openssl version -d
OPENSSLDIR: "/usr/lib/ssl"
步骤2 切换到该目录并列出目录内容。你应该看到一个名为“certs”的目录。
root@ubuntu:~# cd /usr/lib/ssl && ls -al
步骤3 切换到该目录。
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
。
root@ubuntu:# cd /etc
root@ubuntu:# nano ca-certificates.conf
添加your.cert.name.crt
到文件(ca-certificates.conf
)并保存。
最后一步:
执行程序update-ca-certificates –fresh
。
注意:可能希望/etc/ssl/certs
在执行命令之前进行备份。
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网站上进行卷曲测试,现在就可以运行。
https://stackoverflow.com/questions/-100004420
复制相似问题