Openssl 客户端证书

Openssl 客户端证书,openssl,Openssl,我构建了一个客户端软件来与服务器通信。连接应该是安全的(SSL) 我使用用于linux的openssl库。在SSL握手期间,服务器询问我的客户端证书,但我没有。当我将浏览器连接到该服务器时,浏览器 保存证书,然后我找到了它。然后我将其放入我的源代码中,如下所示: if (SSL_CTX_use_certificate_file(ctx, "client.crt", SSL_FILETYPE_PEM) <= 0) { ERR_print_errors_fp(stderr);

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

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

如果(SSL_CTX_use_certificate_file(CTX,“client.crt”,SSL_FILETYPE_PEM)假设您可以找到私钥,只需使用
int SSL_CTX_use_PrivateKey_文件加载私钥即可(SSL_CTX*CTX,const char*file,int type

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


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

你是在向社区询问私钥的值吗?你的意思是我应该生成自己的密钥文件吗?它不起作用。我试过了。因为客户端证书和私钥不匹配。我使用函数SSL_CTX_check_private_键()来查看。