0

我构建了一个客户端软件来与服务器通信。连接应该是安全的(SSL)我使用用于 linux 的 openssl 库。在 SSL 握手期间,服务器询问我的客户端证书,但我没有。当我用浏览器连接到该服务器浏览器保存证书,我找到了它。然后我把它放在我的源代码中,如下所示:

if (SSL_CTX_use_certificate_file(ctx, "client.crt", SSL_FILETYPE_PEM) <= 0)
{
    ERR_print_errors_fp(stderr);
    exit(1);
}

但是服务器仍然向我发送我的客户端证书请求并断开连接。我想我还需要一个文件 - 我必须发送但我不知道在哪里可以找到它的密钥文件。有人可以帮忙吗?

4

2 回答 2

0

假设您可以找到您的私钥,您可以简单地使用int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file, int type.

于 2012-09-12T08:29:46.947 回答
0

正如 Jumbogram 所说,您必须将匹配的私钥加载到您尝试加载的证书文件中。您不能只生成一个新密钥并使用它,因为密钥和使用该密钥签名的证书不匹配。

相反,使用 openssl 生成一个新的密钥和证书对,并将 SSL_CTX_* 函数指向它们。

于 2012-10-23T14:54:51.237 回答