当前位置: 首页 > 知识库问答 >
问题:

从命令行使用CURL的https连接

毛胜
2023-03-14

我不熟悉Curl和Cacerts的世界,在连接到服务器时遇到了一个问题。基本上,我需要测试从一台机器到另一台机器的https连接。我有一个URL,我需要从机器a(linux机器)连接到它。我在命令提示符下尝试了这个方法

cmd> curl https://[my domain or IP address]

并得到以下结果:

curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

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

openssl s_client -connect <domain name or Ip address>:443

并得到了一些响应,包括服务器证书(在----开始证书-----和------结束证书---)。

接下来我该怎么办。我想,我只需将文本复制粘贴到BEGIN证书中即可

我尝试了这个-复制文本BEGIN CERTIFICATE

cmd>curl --cacert my-ca.crt https://[my domain or IP address]

但也犯了同样的错误。


共有3个答案

左恺
2023-03-14

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

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

将证书转换为PEM,并将其转换为1个文件。

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

洪和平
2023-03-14

这是我的日常脚本

curl --insecure -v https://www.google.com 2>&1 | awk 'BEGIN { cert=0 } /^\* Server certificate:/ { cert=1 } /^\*/ { if (cert) print }'

输出:

* Server certificate:
*    subject: C=US; ST=California; L=Mountain View; O=Google Inc; CN=www.google.com
*    start date: 2016-01-07 11:34:33 GMT
*    expire date: 2016-04-06 00:00:00 GMT
*    issuer: C=US; O=Google Inc; CN=Google Internet Authority G2
*    SSL certificate verify ok.
* Server GFE/2.0 is not blacklisted
* Connection #0 to host www.google.com left intact
越健
2023-03-14

我也遇到了同样的问题——我从自己的站点获取一个页面,该页面通过HTTPS提供服务,但curl给出了相同的“SSL证书问题”消息。我通过在调用中添加-k标志来解决这个问题,以允许不安全的连接。

curl -k https://whatever.com/script.php

编辑:我发现了问题的根源。我使用的是SSL证书(来自StartSSL,但我认为这并不重要),并且没有正确设置中间证书。如果您遇到与上面的user1270392相同的问题,那么在求助于curl-kfix之前,最好先测试SSL证书并解决任何问题。

 类似资料:
  • 我正在尝试运行以下CURL命令,但遇到SSL证书错误: 错误: curl:(60)SSL证书问题,验证CA证书是否正常。详细信息:错误:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败更多详细信息:http://curl.haxx.se/docs/sslcerts.html 默认情况下,curl使用证书授权中心(CA)公钥(CA证书)的“捆绑包”执

  • 当我在终端中点击curl代码时,我得到了200,所以我假设我编写testStytch的方式到目前为止还可以。但是,一旦我试图集成到java文件中,我就会收到错误的请求响应。我现在有点不知所措。https://github.com/libetl/curl这就是我所说的转换curl代码。 这是我得到的错误。https响应代理{HTTP/1.1 400错误请求[日期:星期四,2021 23:21:424

  • 问题内容: 在Mac上如何从命令行连接到MySQL?(即给我看代码) 我正在做一个PHP / SQL教程,但首先假设您已经在MySQL中。 问题答案: 看到这里http://dev.mysql.com/doc/refman/5.0/en/connecting.html 上面的选项表示: 查看链接,那里有详细的链接! 如Rick所述,您可以通过不这样传递密码来避免将密码作为命令的一部分传递: 编辑此

  • 问题内容: 我从来没有做过卷曲,所以需要一些帮助。我已经尝试通过示例来解决这个问题,但是我无法理解! 我有一个curl命令,可以从linux(ubuntu)命令行成功运行,该命令行通过api将文件放入Wiki。 我需要将此curl命令合并到我正在构建的PHP脚本中。 如何转换curl命令,使其在PHP脚本中起作用? cookie.txt包含身份验证,但是我不会在脚本中将其以明文形式出现,因为这将仅

  • 问题内容: 我想从网站上下载一些页面,并成功地使用了它,但是我想知道是否像大多数下载管理器一样一次一次下载多个页面,这会加快速度。是否可以在命令行实用程序中执行此操作? 我正在使用的当前命令是 在这里,我从1到10下载页面,并将它们存储在名为的文件中。 另外,是否有可能将每个URL的输出写入单独的文件say ,其中正在处理的页面的实际URL 在哪里。 问题答案: 好吧,这只是一个简单的UNIX进程

  • 如何让这个CURL命令在Zapier中按计划运行? Curl-请求POST\