我构建了一个与服务器通信的客户端软件。连接应该是安全的(SSL) 我在linux上使用openssl库。在SSL握手期间,服务器询问我的客户端证书,但我没有。当我将浏览器连接到浏览器时 保留证书,我找到了。我把它放在我的源代码中:
if (SSL_CTX_use_certificate_file(ctx, "client.crt", SSL_FILETYPE_PEM) <= 0)
{
ERR_print_errors_fp(stderr);
exit(1);
}
但服务器仍然向我发送请求我的客户端证书并删除连接。我想我需要一个文件 - 我必须发送的密钥文件,但我不知道在哪里找到它。 有人可以帮忙吗?
答案 0 :(得分:0)
假设您可以找到私钥,只需使用int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file, int type
加载即可。
答案 1 :(得分:0)
正如Jumbogram所述,您必须将匹配的私钥加载到您尝试加载的证书文件中。您不能只生成新密钥并使用它,因为密钥和使用该密钥签名的证书将不匹配。
相反,使用openssl生成新的密钥和证书对,并将SSL_CTX_ *函数指向那些。