https命令 - 命令行工具curl




从命令行使用CURL的https连接 (7)

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

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 CERTIFICATE----- and -----END CERTIFICATE----- )。

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

我试过这个 - 复制了BEGIN CERTIFICATE & END CERTIFICATE的文本并将其保存在.crt文件中 - 将其命名为my-ca.crt (也通过将其命名为my-ca.pem文件尝试了同样的事情)然后做了这个:

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

但得到了同样的错误。




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


对我来说,我只是想测试一个具有自动http-> https重定向的网站。 我想我已经安装了一些证书,所以这对我来说在Ubuntu 16.04上运行curl 7.47.0 (x86_64-pc-linux-gnu) libcurl/7.47.0 GnuTLS/3.4.10 zlib/1.2.8 libidn/1.32 librtmp/2.3

curl --proto-default https <target>



我已经能够使用现有的系统默认CA文件了解debian6,这是:

/etc/ssl/certs/ca-certificates.crt

作为root,可以这样做:

echo curl.cainfo=/etc/ssl/certs/ca-certificates.crt >> /etc/php5/mods-available/curl.ini

然后重新启动Web服务器。


这是我的日常脚本:

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






certificate