我可以让 curl(或 wget)忽略特定的 TLS 错误吗?(绕过过期的证书而不禁用证书验证)

我可以让 curl(或 wget)忽略特定的 TLS 错误吗?(绕过过期的证书而不禁用证书验证)

我正在编写一个依赖于我无法控制的远程 API 端点的脚本。

今天,我的脚本停止工作了,因为终端的 SSL 证书今天已过期,但他们还没有修复它。运行后curl -v,我得到了以下输出:

wug@server:~$ curl -v -G -m5 [redacted]
* Connecting to hostname: 10.12.112.1
*   Trying 10.12.112.1:19999...
* TCP_NODELAY set
* Connected to 10.12.112.1 (10.12.112.1) port 19999 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /[redact]/ca.rsa.4096.crt
  CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (OUT), TLS alert, certificate expired (557):
* SSL certificate problem: certificate has expired
* Closing connection 0
curl: (60) SSL certificate problem: certificate has expired
More details here: https://curl.haxx.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.

我对此很恼火,但这超出了我的控制范围。这里需要考虑安全性,所以我不想禁用所有 TLS 验证curl -k。理想情况下,我会传递一个参数,指示 curl 有选择地忽略有关过期证书的错误(似乎是 TLS 1.3 错误 557)。可以这样做吗?如果不行,可以wget做到吗?

答案1

我没有找到有选择地忽略有关证书过期的错误的方法。

使用服务器证书的哈希值可能会有所帮助--pinnedpubkey。缺点是,显然,每当服务器证书更新时,您都必须更改哈希值。

如果哈希值正确,我不太确定会发生什么,但当证书过期时。就我的用例而言,事实证明可以--pinnedpubkey结合--insecure 没有 --insecure覆盖--pinnedpubkey设置,但我不知道这是否是可能随着 curl 版本而改变的保证行为。

相关内容