Chrome 返回 ERR_NOT_IMPLEMENTED

Chrome 返回 ERR_NOT_IMPLEMENTED

我有一个需要 mTLS(客户端证书身份验证)的 https 服务器。当我尝试使用 Windows 10 上的 Chrome(版本 75.0.3770.100(官方版本)(64 位))访问服务器时,它要求我选择客户端证书(我选择了)。之后 chrome 返回 ERR_NOT_IMPLEMENTED。

附加信息:

  • 我可以使用相同的 URL 从 IE11、Edge 和 Firefox 访问服务器
  • 已建立对服务器证书 CA 证书的信任(将 CA 导入受信任的根证书颁发机构存储)。连接在 IE 中被标记为安全。
  • 捕获了 chrome 网络日志。我可以在这里找到问题:
t=3200 [st=10]      SSL_HANDSHAKE_MESSAGE_RECEIVED
                    --> bytes =
                      0E 00 00 00                                        .   
                    --> type = 14
t=3200 [st=10]      SSL_CLIENT_CERT_REQUESTED
t=3201 [st=11]      SSL_HANDSHAKE_ERROR
                    --> error_lib = 16
                    --> error_reason = 228
                    --> file = "../../third_party/boringssl/src/ssl/ssl_cert.cc"
                    --> line = 242
                    --> net_error = -11 (ERR_NOT_IMPLEMENTED)
                    --> ssl_error = 1
t=3201 [st=11]   -SSL_CONNECT
                  --> net_error = -11 (ERR_NOT_IMPLEMENTED)
t=3201 [st=11]    SOCKET_CLOSED

ssl_cert.cc:242我查看了BoringSSL的源代码https://github.com/google/boringssl/blob/d6f9c359d219055a89c676cb8886421b145a08da/ssl/ssl_cert.cc#L242

这里的相关代码似乎是:

bool ssl_is_key_type_supported(int key_type) {
  return key_type == EVP_PKEY_RSA || key_type == EVP_PKEY_EC ||
         key_type == EVP_PKEY_ED25519;
}

或者换句话说。如果是 RSA 证书,该函数应该返回 true,并且不会导致上述错误。

知道这里出了什么问题吗?

谢谢。

相关内容