ACE SSL错误:对等方没有返回证书
我正在为应用程序制作服务器和客户端,并使用带有OpenSSL的ACE库。 我试图让相互认证工作,◦服务器将只接受来自可信客户端的连接。
我生成了一个CA密钥和证书,并用它来签署一个服务器证书和一个客户证书(每个证书都有自己的密钥)。 我似乎正确地加载了可信存储,但在握手过程中,我一直收到错误“peer没有返回证书”。
服务器端代码:
ACE_SSL_Context *context = ACE_SSL_Context::instance();
context->set_mode(ACE_SSL_Context::SSLv23_server);
context->certificate("../ACE-server/server_cert.pem", SSL_FILETYPE_PEM);
context->private_key("../ACE-server/server_key.pem", SSL_FILETYPE_PEM);
if (context->load_trusted_ca("../ACE-server/trusted.pem", 0, false) == -1) {
ACE_ERROR_RETURN((LM_ERROR, "%pn", "load_trusted_ca"), -1);
}
if (context->have_trusted_ca() <= 0) {
ACE_ERROR_RETURN((LM_ERROR, "%pn", "have_trusted_ca"), -1);
}
客户端代码:
ACE_SSL_Context *context = ACE_SSL_Context::instance();
context->set_mode(ACE_SSL_Context::SSLv23_client);
context->certificate("../ACE-client/client_cert.pem", SSL_FILETYPE_PEM);
context->private_key("../ACE-client/client_key.pem", SSL_FILETYPE_PEM);
我按照以下说明生成证书:https://blog.codeship.com/how-to-set-up-mutual-tls-authentication/
并且在线检查时,我发现如果.crt和.key文件可读,它们应该已经是.pem格式,并且不需要转换它们。 所以我只是改变了扩展名并在这里使用它们。
任何帮助表示赞赏!
我的问题显然与这里看到的一样:OpenSSL客户端不发送客户端证书
创建SSL套接字后,我正在更改SSL上下文。 现在相互身份验证正常,但是在关闭连接时我的客户端崩溃了。 虽然我不知道为什么还没有。
链接地址: http://www.djcxy.com/p/21825.html