连接 https Web 应用程序时出现 cURL 段错误,但 wget 可以连接

连接 https Web 应用程序时出现 cURL 段错误,但 wget 可以连接

我已经使用 Jetty 和 SSL 设置了服务器。我对客户端和服务器使用自签名服务器证书。当我尝试使用 wget 访问它时,一切都正常。当我尝试使用 curl 访问它时,问题出现了:

$ curl -k --cert ./mycert-001.pem --key ./mykey-001.pem https://****:9994/rest/list --verbose
* About to connect() to server port 9994 (#0)
*   Trying ****...
* Connected to server(****) port 9994 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* skipping SSL peer certificate verification
* NSS: client certificate from file
*       subject: CN=foo,OU=bar,O=baz,L=Default City,C=US
*       start date: Nov 29 18:50:58 2016 GMT
*       expire date: Nov 29 18:50:58 2019 GMT
*       common name: foo
*       issuer: CN=foo,OU=bar,O=baz,L=Default City,C=US
Segmentation fault

然后当我尝试使用 wget 时:

$ wget --certificate=mycert-001.pem --private-key=mykey-001.pem --no-check-certificate --auth-no-challenge https://****:9994/rest/list
--2017-04-14 15:50:20--  https://****:9994/rest/list
Resolving **** (****)... *****
Connecting to ***** (****)|****|:9994... connected.
WARNING: cannot verify ****'s certificate, issued by ‘/C=US/ST=FOO/L=Default/O=FOO/OU=FOO/CN=FOO’:
  Self-signed certificate encountered.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [application/json]
Saving to: ‘list.5’

    [ <=>                                                  ] 58          --.-K/s   in 0s

2017-04-14 15:50:20 (3.47 MB/s) - ‘list.5’ saved [58]

我是否缺少 curl 上的一个选项来让它工作?

答案1

这样的核心程序curl绝对不应该像预期的那样崩溃。你遇到了一个错误

您可以尝试的操作(这现在是一个故障排除问题):

  • 尝试更新您的发行版软件包(apt update && apt full-upgrade,或您的发行版等效软件包,因为您没有说明您使用的发行版/版本)
  • 尝试升级你的发行版到较新的版本
  • 寻找curl针对不同于 NSS 的 TLS 库进行编译的替代软件包(可能是 OpenSSL、PolarSSL 或 GnuTLS)
  • curl编译自己的新版本
  • 寻找容器镜像更新的操作系统或获取扁平包装使用不同版本的 curl 或使用不同的 TLS 库进行编译

...ETC。

相关内容