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]
但得到了同样的错误。
在这里,您可以找到CA证书,其中包含下载和转换Mozilla CA证书的说明 。 获得ca-bundle.crt
或cacert.pem
您只需使用:
curl.exe --cacert cacert.pem https://www.google.com
要么
curl.exe --cacert ca-bundle.crt https://www.google.com
不确定你建议的解决方案,但我只是寻找类似的信息,我发现这个有用的网站使用curl与PHP
http://unitstep.net/blog/2009/05/05/using-curl-in-php-to-access-https-ssltls-protected-sites/
使用--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证书包: https://curl.haxx.se/ca/cacert.pem : https://curl.haxx.se/ca/cacert.pem并将其保存在本地
找到
php.ini
文件将
curl.cainfo
设置为证书的路径。 所以它会像:
curl.cainfo = /path/of/the/keys/cacert.pem
我已经能够使用现有的系统默认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