我们有一个当前通过 HTTP 协议(protocol)运行的应用程序。我们的目标是将其迁移到 HTTPS。我们已经进行了必要的更改,但是在登录应用程序期间我收到了“对等未经过身份验证”的错误消息。
我对 SSL 世界完全陌生,所以我用谷歌搜索并捕获了 Wireshark 跟踪,通信如下所示:
- 客户端向服务器发送 [SYN]。
- 服务器向客户端发送[SYN,ACK]。
- 客户端向服务器发送[ACK]。
- 客户端向服务器发送消息
ClientHello
。 - 服务器发送
ServerHello
,然后发送带有消息“ServerHello, Certificate, ServerHelloDone
的证书”
- 警报 61,致命级别,描述:证书未知//此处失败。
请就可能出现的问题分享您的意见。我们被困在这里,无法继续前进。
最佳答案
已更新
这是一个奇怪的错误。 Certificate Unknown
通常应伴随 Alert 代码 46 而不是 61.
如果您看到,Alert Protocol (RFC 5246) 中没有提到 SSL Alert 61
enum {
close_notify(0),
unexpected_message(10),
bad_record_mac(20),
decryption_failed_RESERVED(21),
record_overflow(22),
decompression_failure(30),
handshake_failure(40),
no_certificate_RESERVED(41),
bad_certificate(42),
unsupported_certificate(43),
certificate_revoked(44),
certificate_expired(45),
certificate_unknown(46),
illegal_parameter(47),
unknown_ca(48),
access_denied(49),
decode_error(50),
decrypt_error(51),
export_restriction_RESERVED(60),
protocol_version(70),
insufficient_security(71),
internal_error(80),
user_canceled(90),
no_renegotiation(100),
unsupported_extension(110),
(255)
} AlertDescription;
如果不查看痕迹,就很难进一步调查。
看起来 Server Hello 中提供的Server certificate 没有被客户端信任。
我建议使用带有 -v
选项的 cURL.exe
进行测试。
关于SSL 握手失败,出现 'Certificate Unknown',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45510308/