Libcurl 7.70.0 - error:14094417:SSL routines:ssl3_read_bytes:sslv3 alert illegal parameter
Libcurl 7.70.0 - error:14094417:SSL routines:ssl3_read_bytes:sslv3 alert illegal parameter
我在使用 libcurl 7.70.0 完整日志尝试通过我的服务器使用 ssl 时收到以下错误:
- 尝试::1:443...
- 正在尝试 127.0.0.1:443...
- 连接到本地主机 (127.0.0.1) 端口 443 (#0)
- ALPN,提供 h2
- ALPN,提供 http/1.1
- 成功设置证书验证位置:
- CA文件:../../certs.pem
路径:none
- TLSv1.3 (OUT),TLS 握手,客户端问候 (1):
- TLSv1.3 (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 握手, CERT 验证 (15):
- TLSv1.0 (OUT),TLS 更改密码,更改密码规范 (1):
- TLSv1.0 (OUT),TLS 握手,完成 (20):
- TLSv1.0 (IN),TLS 警报,非法参数 (559):
- 错误:14094417:SSL routines:ssl3_read_bytes:sslv3 警告非法参数
- 正在关闭连接 0
任何想法,可能导致问题的原因是什么?
如果您的 curl 使用的 OpenSSL 中存在错误,它 可以 导致此问题,因此它会发送无效的握手消息。上游 OpenSSL 中不太可能存在这样的错误,它至少被数千个程序使用并且可能被数十亿用户使用,但如果您使用的是您自己构建的版本或其他人非标准构建的版本,则可能已经引入了.
它可以 如果服务器中存在错误并且它错误地中止握手,或者正确地中止握手但使用了错误的警报代码,则会导致此问题。特别是服务器可能不喜欢您的客户端发送的证书(链),并且应该使用指示证书问题的多个警报代码之一,但它使用 illegal_parameter(47) 代替。最好的办法是查看服务器日志,看看它认为问题出在哪里,and/or 因为它是本地调试。
问题是我使用的证书不受服务器信任。
我在使用 libcurl 7.70.0 完整日志尝试通过我的服务器使用 ssl 时收到以下错误:
- 尝试::1:443...
- 正在尝试 127.0.0.1:443...
- 连接到本地主机 (127.0.0.1) 端口 443 (#0)
- ALPN,提供 h2
- ALPN,提供 http/1.1
- 成功设置证书验证位置:
- CA文件:../../certs.pem 路径:none
- TLSv1.3 (OUT),TLS 握手,客户端问候 (1):
- TLSv1.3 (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 握手, CERT 验证 (15):
- TLSv1.0 (OUT),TLS 更改密码,更改密码规范 (1):
- TLSv1.0 (OUT),TLS 握手,完成 (20):
- TLSv1.0 (IN),TLS 警报,非法参数 (559):
- 错误:14094417:SSL routines:ssl3_read_bytes:sslv3 警告非法参数
- 正在关闭连接 0
任何想法,可能导致问题的原因是什么?
如果您的 curl 使用的 OpenSSL 中存在错误,它 可以 导致此问题,因此它会发送无效的握手消息。上游 OpenSSL 中不太可能存在这样的错误,它至少被数千个程序使用并且可能被数十亿用户使用,但如果您使用的是您自己构建的版本或其他人非标准构建的版本,则可能已经引入了.
它可以 如果服务器中存在错误并且它错误地中止握手,或者正确地中止握手但使用了错误的警报代码,则会导致此问题。特别是服务器可能不喜欢您的客户端发送的证书(链),并且应该使用指示证书问题的多个警报代码之一,但它使用 illegal_parameter(47) 代替。最好的办法是查看服务器日志,看看它认为问题出在哪里,and/or 因为它是本地调试。
问题是我使用的证书不受服务器信任。