首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从命令行使用CURL进行https连接

从命令行使用CURL进行https连接
EN

Stack Overflow用户
提问于 2012-04-10 04:52:04
回答 9查看 937.9K关注 0票数 171

我是Curl和Cacerts的新手,在连接到服务器时遇到了一个问题。基本上,我需要测试通过https从一台机器到另一台机器的连通性。我有一个URL,我需要从计算机A(一台linux计算机)连接到该URL,我在命令提示符上尝试了一下

代码语言:javascript
复制
cmd> curl https://[my domain or IP address]

并得到了以下结果:

代码语言:javascript
复制
curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

在浏览互联网上的一些文章时,我这样做了:

代码语言:javascript
复制
openssl s_client -connect <domain name or Ip address>:443

并得到了一些响应,包括服务器证书(在-----BEGIN CERTIFICATE----- and -----END CERTIFICATE-----内部)。

接下来我该怎么做呢?我想,我只需要将文本复制粘贴到BEGIN CERTIFICATE & END CERTIFICATE中并保存到一个文件中即可。但是,它应该是什么类型的文件?.pem.crt ?.在那之后我应该做什么?

我尝试了一下--复制BEGIN CERTIFICATE & END CERTIFICATE中的文本并将其保存到一个.crt文件中--命名为my-ca.crt (也尝试了同样的操作,将其命名为my-ca.pem文件),然后这样做:

代码语言:javascript
复制
cmd>curl --cacert my-ca.crt https://[my domain or IP address]

但得到了相同的错误。

EN

回答 9

Stack Overflow用户

发布于 2014-02-11 01:57:43

我也遇到了同样的问题--我从我自己的网站上获取了一个页面,这个页面是通过HTTPS提供的,但是curl给出了同样的"SSL证书问题“消息。我通过向调用添加一个-k标志来允许不安全的连接,从而解决了这个问题。

代码语言:javascript
复制
curl -k https://whatever.com/script.php

编辑:我发现了问题的根源。我使用的是SSL证书(来自StartSSL,但我认为这并不重要),并且没有正确设置中间证书。如果您遇到了与上面的user1270392相同的问题,那么在求助于curl -k修复之前,使用test your SSL cert并修复任何问题可能是一个好主意。

票数 182
EN

Stack Overflow用户

发布于 2015-10-21 17:09:29

您需要为curl提供整个证书链,因为curl不再附带任何CA证书。由于cacert选项只能使用一个文件,因此您需要将完整的链信息连接到一个文件中

将证书链(例如,从浏览器)复制到DER编码的二进制x.509(.cer)中。对每个证书执行此操作。

将证书转换为PEM,并将它们合并为一个文件。

代码语言:javascript
复制
openssl x509 -inform DES -in file1.cer -out file1.pem -text
openssl x509 -inform DES -in file2.cer -out file2.pem -text
openssl x509 -inform DES -in file3.cer -out file3.pem -text

cat *.pem > certRepo

curl --cacert certRepo -u user:passwd -X GET -H 'Content-Type: application/json' "https//somesecureserver.com/rest/field"

我在这里写了一个关于如何做到这一点的博客:http://javamemento.blogspot.no/2015/10/using-curl-with-ssl-cert-chain.html

票数 41
EN

Stack Overflow用户

发布于 2013-04-30 18:03:47

使用--cacert指定.crt文件。例如,ca-root-nss.crt

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

https://stackoverflow.com/questions/10079707

复制
相关文章

相似问题

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