gpt4 book ai didi

c - 让客户端在身份验证期间向服务器发送证书

转载 作者:太空宇宙 更新时间:2023-11-03 23:48:06 25 4
gpt4 key购买 nike

我已经使用 OpenSSL 设置了我的客户端-服务器通信,我的服务器正在发送它的证书。现在,我想让我的客户端也向服务器发送证书。在我的客户端,我有以下代码:

ctx = InitCTX();
LoadCertificates(ctx, "clientCert.pem", "clientCert.pem"); /* load certs */
server = OpenConnection(hostname, atoi(portnum));
ssl = SSL_new(ctx); /* create new SSL connection state */
SSL_set_fd(ssl, server); /* attach the socket descriptor */

这是我的 LoadCertificates 函数:

void LoadCertificates(SSL_CTX* ctx, char* CertFile, char* KeyFile)
{
if ( SSL_CTX_use_certificate_file(ctx, CertFile, SSL_FILETYPE_PEM) <= 0 )
{
ERR_print_errors_fp(stderr);
abort();
}
/* set the private key from KeyFile (may be the same as CertFile) */
if ( SSL_CTX_use_PrivateKey_file(ctx, KeyFile, SSL_FILETYPE_PEM) <= 0 )
{
ERR_print_errors_fp(stderr);
abort();
}
/* verify private key */
if ( !SSL_CTX_check_private_key(ctx) )
{
fprintf(stderr, "Private key does not match the public certificate\n");
abort();
}
printf("Certificate attached.\n");
}

我在服务器端有相同的 LoadCertificates 函数,它似乎运行良好。

但是,服务器端未检测到我的客户端证书。我需要在客户端做些什么来发送证书吗?

我使用此处的代码作为基础对客户端代码进行了修改:http://simplestcodings.blogspot.in/2010/08/secure-server-client-using-openssl-in-c.html

最佳答案

... my client-side certificate is not getting detected on the server side. Is there anything different I need to do on the client side to send a certificate across?

服务器需要调用SSL_CTX_set_client_CA_list .它告诉服务器发送它接受的可分辨名称 (DN) 列表以进行客户端身份验证。

服务器需要调用 SSL_CTX_load_verify_locations (或 friend )。这是服务器实际信任发送给客户端的列表中的 CA 的地方。

最后,服务器应该调用SSL_CTX_set_verify并设置 SSL_VERIFY_PEERSSL_VERIFY_FAIL_IF_NO_PEER_CERT

关于c - 让客户端在身份验证期间向服务器发送证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27978939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com