标签: curl

使用 CLI 工具显示远程 SSL 证书详细信息

在 Chrome 中,单击绿色的 HTTPS 锁定图标会打开一个包含证书详细信息的窗口:

在此处输入图片说明

当我用 cURL 尝试同样的方法时,我只得到了一些信息:

$ curl -vvI https://gnupg.org
* Rebuilt URL to: https://gnupg.org/
* Hostname was NOT found in DNS cache
*   Trying 217.69.76.60...
* Connected to gnupg.org (217.69.76.60) port 443 (#0)
* TLS 1.2 connection using TLS_DHE_RSA_WITH_AES_128_CBC_SHA
* Server certificate: gnupg.org
* Server certificate: Gandi Standard SSL CA
* Server certificate: UTN-USERFirst-Hardware
> HEAD / HTTP/1.1
> User-Agent: curl/7.37.1
> Host: gnupg.org
> Accept: */*
Run Code Online (Sandbox Code Playgroud)

知道如何从命令行工具(cURL 或其他)获取完整的证书信息吗?

ssl ssl-certificate curl

321
推荐指数
8
解决办法
48万
查看次数

如何使用给定的 IP 地址测试 HTTPS URL

假设一个网站在多个服务器之间进行负载平衡。我想运行一个命令来测试它是否正常工作,例如curl DOMAIN.TLD. 因此,为了隔离每个 IP 地址,我手动指定了 IP。但是很多网站可能托管在服务器上,所以我还是提供了一个主机头,像这样:curl IP_ADDRESS -H 'Host: DOMAIN.TLD'. 在我的理解中,这两个命令创建了完全相同的 HTTP 请求。唯一的区别是,在后一个中,我从 cURL 中取出 DNS 查找部分并手动执行此操作(如果我错了,请纠正我)。

到目前为止一切顺利。但现在我想对 HTTPS 网址做同样的事情。同样,我可以像这样测试它curl https://DOMAIN.TLD。但我想手动指定 IP,所以我运行curl https://IP_ADDRESS -H 'Host: DOMAIN.TLD'. 现在我收到一个 cURL 错误:

curl: (51) SSL: certificate subject name 'DOMAIN.TLD' does not match target host name 'IP_ADDRESS'.
Run Code Online (Sandbox Code Playgroud)

我当然可以通过告诉 cURL 不要关心证书(“-k”选项)来解决这个问题,但这并不理想。

有没有办法将连接的 IP 地址与通过 SSL 认证的主机隔离?

https curl

99
推荐指数
4
解决办法
17万
查看次数

`curl -I` 和 `curl -X HEAD` 之间的区别

我正在观看来自http://www.reddit.com的有趣的服务器类型,curl -I http://www.reddit.com当我猜测它curl -X HEAD http://www.reddit.com会做同样的事情时。但事实上,并非如此。

我很好奇为什么。

这是我在运行两个命令时观察到的:

  • curl -I:按预期工作,输出标题并存在。

  • curl -X HEAD: 不显示任何内容,似乎在等待用户输入。

但是,嗅探tshark我看到第二个命令实际上发送了相同的 HTML 查询并收到了正确的答案,但它没有显示它,也没有关闭连接。

curl -I

0.000000 333.33.33.33 -> 213.248.111.106 TCP 59675 > http [SYN] Seq=0 Win=5840 Len=0 MSS=1460 TSV=47267342 TSER=0 WS=6
0.045392 213.248.111.106 -> 333.33.33.33 TCP http > 59675 [SYN, ACK] Seq=0 Ack=1 Win=5792 Len=0 MSS=1460 TSV=2552532839 TSER=47267342 WS=1
0.045441 333.33.33.33 -> 213.248.111.106 TCP 59675 > http [ACK] Seq=1 Ack=1 Win=5888 Len=0 TSV=47267353 TSER=2552532839
0.045623 333.33.33.33 …
Run Code Online (Sandbox Code Playgroud)

diff http-headers curl

83
推荐指数
3
解决办法
12万
查看次数

curl:禁用证书验证

我正在开发中,我需要访问https://localhost. 我知道证书不匹配。我只是想让 curl 忽略它。目前它给了我以下错误消息:

curl: (51) SSL peer certificate or SSH remote key was not OK
Run Code Online (Sandbox Code Playgroud)

是否可以告诉 curl 执行访问?

linux curl

77
推荐指数
3
解决办法
22万
查看次数

Windows下有没有像wget/curl这样的内置命令行工具?

我来自 Linux/Unix 背景,我一直想知道 Windows 是否有可以从控制台下载文件的二进制文件。

我想自动化某个过程,我的一个要求是不要安装太多软件,而是尽可能多地使用内置的东西。

谢谢!

windows command-line-interface wget curl

49
推荐指数
4
解决办法
24万
查看次数

如何从命令行让 cURL 使用 keepalive?

我正在尝试验证在与我正在运行的 Tomcat 网络服务器通信期间是否正在使用 HTTP 持久连接。目前,我可以从浏览器(例如 Chrome)检索服务器上的资源,并使用 netstat 验证连接已建立:

# visit http://server:8080/path/to/resource in Chrome
[server:/tmp]$ netstat -a
...
tcp        0      0 server.mydomain:webcache client.mydomain:55502 ESTABLISHED
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用 curl,则在 netstat 中看不到服务器上的连接。

[client:/tmp]$ curl --keepalive-time 60 --keepalive http://server:8080/path/to/resource
...

[server:/tmp]$ netstat -a
# no connection exists for client.mydomain
Run Code Online (Sandbox Code Playgroud)

我也尝试使用以下 curl 命令:

curl -H "Keep-Alive: 60" -H "Connection: keep-alive" http://server:8080/path/to/resource
Run Code Online (Sandbox Code Playgroud)

这是我的客户端机器的 curl 版本:

[server:/tmp]$ curl -V
curl 7.19.5 (x86_64-unknown-linux-gnu) libcurl/7.19.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5 libssh2/1.1
Protocols: tftp ftp telnet dict http file https ftps scp sftp
Features: …
Run Code Online (Sandbox Code Playgroud)

http netstat tcp keepalive curl

47
推荐指数
3
解决办法
17万
查看次数

如何在 RedHat 上更新 cURL CA 包?

我遇到了与我的 cURL 版本捆绑在一起的 CA 包已过时的问题。

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
Run Code Online (Sandbox Code Playgroud)

通读文档对我没有帮助,因为我不明白我需要做什么或如何做。我正在运行 RedHat 并且需要更新 CA 包。我需要做什么才能在 RedHat 上更新我的 CA 包?

ssl redhat curl certificate-authority

43
推荐指数
5
解决办法
14万
查看次数

卷曲 POST - 需要 411 长度

我们有一个用 PHP 构建的 RestFUL API。如果我们提出请求:

curl -u api-key:api-passphrase https://api.domain.com/v1/product -X POST
Run Code Online (Sandbox Code Playgroud)

我们回来:

411 - Length Required
Run Code Online (Sandbox Code Playgroud)

虽然如果我们简单地添加-d ""到请求中,它可以工作并且没有 411 错误。有没有办法不需要在 curl 命令中添加 -d ?

我们正在使用 lighttpd 网络服务器,并且相信它的 lighttpd 不是 php 返回 411 错误。

php lighttpd curl

42
推荐指数
1
解决办法
6万
查看次数

默认 CA 证书包位置

我需要将 .pem 证书文件添加到我的默认 CA 证书包中,但我不知道默认的 CA 证书包保存在哪里。

我需要将我的新 .pem 文件附加到这个默认包中。我宁愿这样做也不愿使用 --capath 指定我自己的位置

cURL 清楚地知道在哪里查看,但我没有看到任何显示位置的 cURL 命令。是否有命令可以显示此位置?我怎样才能找到它?

根据 cURL:
将服务器的 CA 证书添加到现有的默认 CA 证书包中。可以通过使用 --with-ca-bundle 选项运行配置来更改使用的 CA 包的默认路径,该选项指出您选择的路径。

谢谢

ssl-certificate curl

35
推荐指数
5
解决办法
7万
查看次数

当 curl 得到 *空响应* 时如何排除连接故障

我想知道如何继续排除对网络服务器的 curl 请求不起作用的原因。我不是在寻求依赖于我的环境的帮助,我只是想知道如何收集有关通信的确切部分失败、端口号等的信息。

chad-integration:~ # curl -v 111.222.159.30
* About to connect() to 111.222.159.30 port 80 (#0)
*   Trying 111.222.159.30... connected
* Connected to 111.222.159.30 (111.222.159.30) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.19.0 (x86_64-suse-linux-gnu) libcurl/7.19.0     OpenSSL/0.9.8h zlib/1.2.3 libidn/1.10
> Host: 111.222.159.30
> Accept: */*
> 
* Empty reply from server
* Connection #0 to host 111.222.159.30 left intact
curl: (52) Empty reply from server
* Closing connection #0
Run Code Online (Sandbox Code Playgroud)

所以,我知道空响应意味着 curl 没有从服务器得到任何响应。没问题,这正是我想要弄清楚的。

但是我可以从这里的 cURL 获得哪些更具体的信息?

它能够成功“连接”,所以这不涉及一些双向通信吗?如果是这样,那么为什么响应也没有来?请注意,我已验证我的服务已启动并返回响应。

请注意,我对这个级别的网络有点陌生,所以请随意提供一些一般性的介绍材料。

tcp curl

29
推荐指数
2
解决办法
15万
查看次数