如何CURL不安全的HTTPS

时间:2018-01-29 18:27:33

标签: ssl curl handshake

对于初学者,我正在尝试CURL托管在docker镜像上的API。这是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:!导出:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH

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

TLSv1.0(OUT),TLS握手,客户问候(1):
TLSv1.0(IN),TLS握手,服务器问候(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警报,服务器问候(2):
错误:14094410:SSL例程:SSL3_READ_BYTES:sslv3警报握手失败
停止了暂停流!
关闭连接0 curl:(35)错误:14094410:SSL例程:SSL3_READ_BYTES:sslv3警报握手失败

1 个答案:

答案 0 :(得分:0)

--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参数提供预期的客户端证书和密钥。