忽略SSL警报35:sslv3警报不支持的证书

a11xaf1n  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(207)

我试图使用cURL击中一个嵌入式服务器上的API(从地理卫星调制解调器),我不能改变。我的cURL请求成功从我的Mac与以下版本

curl 8.1.2 (x86_64-apple-darwin22.0) libcurl/8.1.2 (SecureTransport) LibreSSL/3.3.6 zlib/1.2.11 nghttp2/1.51.0
Release-Date: 2023-05-30
Protocols: dict file ftp ftps gopher gophers http https imap imaps ldap ldaps mqtt pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features: alt-svc AsynchDNS GSS-API HSTS HTTP2 HTTPS-proxy IPv6 Kerberos Largefile libz MultiSSL NTLM NTLM_WB SPNEGO SSL threadsafe UnixSockets

然而,在我的Linux服务器上,我遇到了SSL alert 35,其cURL如下:

curl 7.86.0 (x86_64-pc-linux-gnu) libcurl/7.86.0 OpenSSL/3.0.7 zlib/1.2.13 brotli/1.0.9 zstd/1.5.2 libidn2/2.3.2 libssh2/1.10.0 nghttp2/1.49.0
Release-Date: 2022-10-26
Protocols: dict file ftp ftps gopher gophers http https imap imaps mqtt pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp
Features: alt-svc AsynchDNS brotli GSS-API HSTS HTTP2 HTTPS-proxy IDN IPv6 Kerberos Largefile libz NTLM NTLM_WB SPNEGO SSL threadsafe TLS-SRP UnixSockets zstd
curl -vvvv -L -k https://192.168.44.1/api/
*   Trying 192.168.44.1:443...
* Connected to 192.168.44.1 (192.168.44.1) port 443 (#0)
* ALPN: offers h2
* ALPN: offers http/1.1
* TLSv1.0 (OUT), TLS header, Certificate Status (22):
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.2 (IN), TLS header, Certificate Status (22):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS header, Unknown (21):
* TLSv1.2 (IN), TLS alert, unsupported certificate (555):
* error:0A000413:SSL routines::sslv3 alert unsupported certificate
* Closing connection 0
curl: (35) error:0A000413:SSL routines::sslv3 alert unsupported certificate

我希望-k会完全跳过证书验证,但是这个警报仍然显示。是否有任何方法可以沉默,忽略,避免这个OpenSSL错误?
Chrome也拒绝使用ERR_BAD_SSL_CLIENT_AUTH_CERT(来自Mac)打开页面,尽管下面我可以从Firefox中提取(似乎)错误的证书:

a0x5cqrl

a0x5cqrl1#

我并不完全清楚服务器是因为什么而阻塞的,但可能是签名算法扩展中缺少SHA-1。有一些服务器无法正确处理这个问题,即使他们提供的证书甚至不使用SHA-1 -参见thisthis的答案。
修复方法类似于参考答案-连接到服务器时使用DEFAULT:@SECLEVEL=0作为密码字符串。

相关问题