Я использую отличный пример, написанный Амлендрой на странице: https://aticleworld.com/ssl-server-client-using-openssl-in-c/ односторонняя аутентификация работает нормально.
Затем я изменил код клиента, чтобы загрузить сертификат клиента, добавив следующеелинии на главную сразу после вызова функции SSL_new (ctx);
/* set the local certificate from CertFile */
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();
}
На стороне сервера я вызвал следующую функцию:
SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, NULL);
На стороне сервера:он сказал, что нет сертификации прибыл от клиента.Любое предложение, почему клиент не отправляет сертификацию на стороне сервера?