【问题标题】:ACE SSL Error: peer did not return a certificateACE SSL 错误:对等方未返回证书
【发布时间】:2017-09-15 21:07:19
【问题描述】:

我正在使用 ACE 库和 OpenSSL 为应用程序制作服务器和客户端。我正在尝试使相互身份验证正常工作,服务器将只接受来自受信任客户端的连接。

我已经生成了一个 CA 密钥和证书,并用它来签署一个服务器证书和一个客户端证书(每个都有自己的密钥)。我似乎正确加载了受信任的存储,但在握手期间我不断收到错误“对等方未返回证书”。

服务器端代码:

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, "%p\n", "load_trusted_ca"), -1);
}

if (context->have_trusted_ca() <= 0) {
    ACE_ERROR_RETURN((LM_ERROR, "%p\n", "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格式了,不用再转换了。所以我只是更改了扩展名并在这里使用它们。

感谢任何帮助!

【问题讨论】:

    标签: ssl openssl ace mutual-authentication


    【解决方案1】:

    我的问题显然和这里看到的一样:OpenSSL client not sending client certificate

    我在创建 SSL 套接字后更改了 SSL 上下文。现在相互身份验证有效,但我的客户端在关闭连接时崩溃。虽然我还不知道为什么会这样。

    【讨论】:

      猜你喜欢
      • 2016-09-23
      • 1970-01-01
      • 2011-02-26
      • 2015-08-08
      • 1970-01-01
      • 2013-05-19
      • 2015-04-11
      • 2014-01-23
      相关资源
      最近更新 更多