【问题标题】:How to CURL unsecured HTTPS如何卷曲不安全的 HTTPS
【发布时间】:2018-07-08 12:44:27
【问题描述】:

首先,我尝试将 CURLAPI 托管在 docker 映像上。这是 CURL 输出,对我来说没有意义。

curl -ik -v --tlsv1.0 --cacert cfmpem.pem --key key.pem https://localhost:13443/boot/api/cfm-menu-context/?page=2

正在尝试 ::1...
TCP_NODELAY 设置
连接到 localhost (::1) 端口 13443 (#0)
ALPN,提供 h2
ALPN,提供 http/1.1
密码选择:ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH

成功设置证书验证位置:
CA 文件:cfm.wdf.sap.corp.pem
CApath:无

TLSv1.0 (OUT)、TLS 握手、客户端问候 (1):
TLSv1.0 (IN)、TLS 握手、Server hello (2):
TLSv1.0 (IN)、TLS 握手、证书 (11):
TLSv1.0 (IN)、TLS 握手、服务器密钥交换 (12):
TLSv1.0 (IN)、TLS 握手、请求 CERT (13):
TLSv1.0 (IN),TLS 握手,服务器完成 (14):
TLSv1.0 (OUT)、TLS 握手、证书 (11):
TLSv1.0 (OUT)、TLS 握手、客户端密钥交换 (16):
TLSv1.0 (OUT)、TLS 更改密码、客户端问候 (1):
TLSv1.0 (OUT),TLS 握手,完成 (20):
TLSv1.0 (IN)、TLS 警报、Server hello (2):
错误:14094410:SSL 例程:SSL3_READ_BYTES:sslv3 警报握手失败
停止暂停流!
关闭连接 0 curl:(35)错误:14094410:SSL例程:SSL3_READ_BYTES:sslv3警报握手失败

【问题讨论】:

  • 服务器是否需要 TLS 1.0 握手?服务器是否需要客户端证书身份验证?
  • 我已经忘记了很多,但你可以将sslv3 与 H2 一起使用吗?我不这么认为。
  • 定义“不安全的 HTTPS”。
  • @evilSnobu - 是的 与此站点的连接使用 TLS 1.0(一种过时的协议)、带有 P-256(一种强密钥交换)的 ECDHE_RSA 和带有 HMAC-SHA1(一种过时的密码)的 AES_128_CBC。

标签: ssl curl handshake


【解决方案1】:

您的--cacert 命令行指定了用于验证服务器证书的信任库。您还有一个命令行参数--key。这用于指定客户端证书的密钥,应与--cert 一起使用以指定客户端证书。但是,您没有--cert 选项,所以--key 没有意义。

TLSv1.0 (IN)、TLS 握手、请求 CERT (13):

这意味着服务器向客户端请求证书,即“客户端证书”。要指定一个,您需要使用命令行选项--cert(您不使用)和--key(您有)。鉴于缺少 --cert 选项,没有已知客户端证书会卷曲,因此不会发送到服务器。这可能是服务器在握手结束时关闭连接并发出错误警报的原因:

TLSv1.0 (IN)、TLS 警报、服务器问候 (2): 错误:14094410:SSL 例程:SSL3_READ_BYTES:sslv3 警报握手失败

要解决此问题,请使用 --cert--key 参数提供预期的客户端证书和密钥。

【讨论】:

    猜你喜欢
    • 2017-03-27
    • 2011-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-22
    • 1970-01-01
    相关资源
    最近更新 更多