SSL 握手失败,“证书未知”

Pav*_*avi 7 ssl https tcp x509certificate handshake

我们有一个当前通过 HTTP 协议运行的应用程序。我们的目标是将其迁移到 HTTPS。我们已经进行了必要的更改,但是在登录应用程序期间,我收到了“对等方未通过身份验证”错误消息。

我对 SSL 世界完全陌生,所以我谷歌搜索并捕获了 Wireshark 跟踪,通信如下所示:

  1. 客户端发送 [SYN] 到服务器。
  2. 服务器向客户端发送 [SYN,ACK]。
  3. 客户端向服务器发送 [ACK]。
  4. 客户端将消息发送ClientHello到服务器。
  5. 服务器发送ServerHello,然后发送带有消息的证书“ServerHello, Certificate, ServerHelloDone
  6. 警报 61,严重级别,说明:证书未知 // 此处失败。

请分享您对可能出现的问题的意见。我们被困在这里,无法继续前进。

Kau*_*day 6

更新

这是一个奇怪的错误。通常Certificate Unknown应伴有警报代码46而不是61

如果您看到,警报协议 (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;
Run Code Online (Sandbox Code Playgroud)

如果不看痕迹,就很难进一步调查。

客户端似乎不信任服务器问候中提供的服务器证书。

我建议使用cURL.exe-v选项来测试这一点。