客户证书

时间:2012-09-12 07:26:44

标签: openssl

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

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

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

2 个答案:

答案 0 :(得分:0)

假设您可以找到私钥,只需使用int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file, int type加载即可。

答案 1 :(得分:0)

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

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