SSL 客户端身份验证返回 Bad Certificate 错误

标签 ssl openssl client-server debian-based

我试图连接到我用 CPP 编写的自定义编写的 ssl 服务器。它具有客户端身份验证功能。通过 Wireshark 观看时会抛出错误 Bad certificate。在服务器端返回的错误是

14560:error:140890B2:SSL routines:SSL3_GET_CLIENT_CERTIFICATE:no certificate returned:s3_srvr.c:2619:

我使用以下代码强制请求客户端证书

SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, NULL);
SSL_CTX_set_verify_depth(ctx, 1);

我可以在 Wireshark 中看到客户端返回证书。

应该使用哪个函数来设置用于在服务器端验证客户端证书的公钥?

最佳答案

从错误消息来看,您的客户端似乎没有向服务器出示证书,而您明确要求客户端需要出示证书(在服务器代码中):

SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, NULL);

可能需要的是告诉您的客户端代码使用证书(连同私钥):

SSL_CTX_use_certificate_chain_file(ctx, pcszCertPath);
SSL_CTX_use_PrivateKey_file(ctx, pcszPrivKeyPath,SSL_FILETYPE_PEM);

希望对您有所帮助。 还要确保您的服务器使用相同的证书链(它信任相同的 CA)。如果这是一个问题,请告诉我,我会帮助您解决问题。

关于SSL 客户端身份验证返回 Bad Certificate 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12650970/

相关文章:

.htaccess - 如何合并两个 .htaccess 重定向?

ssl - 如何在 OpenSSL 中设置 TLS 应用程序数据协议(protocol)

php - iOS 推送通知发送错误

c++ - 客户端/服务器 C++ 之间的通信问题

javascript - ListView 中的 ASP.NET 服务器标记格式不正确错误

authentication - 尝试安装 SSL 时的 LetsEncrypt Web 服务器身份验证问题

php - 如何在 codeigniter 中强制使用 ssl?

ssl - Jetty HttpClient 通过代理使用 SSL 连接

security - 从命令行确定 TLS/SSL 证书是否为 'trusted'?

objective-c - AFNetworking 证书错误