OpenACE SSL错误:Peer未返回证书



我使用带有OpenSSL的ACE库为应用程序制作服务器和客户端。我正在尝试获得相互认证的工作,o服务器只会接受受信任客户的连接。

我已经生成了一个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上下文。现在,相互认证有效,但是我的客户在关闭连接时会崩溃。虽然我不知道为什么那是。

最新更新