服务器要想验证客户端的证书必须在服务器端加入以下函数:
#define CA_CERT ca.pem
SSL_CTX_load_verify_locations(ctx,CA_CERT,NULL);
SSL_CTX_set_verify(ctx,SSL_VERIFY_PEER,NULL);
/*若验证,则放置CA证书*/
SSL_CTX_set_client_CA_list(ctx,SSL_load_client_CA_file(CA_CERT));
/*设置最大的验证用户证书的上级数*/
SSL_CTX_set_verify_depth(ctx,1);
/* 载入用户的数字证书, 此证书用来发送给客户端。 证书里包含有公钥 */
if (!SSL_CTX_use_certificate_file(ctx, CERT_FILE, SSL_FILETYPE_PEM))
{
printf("载入用户证书失败!\n");
ERR_print_errors_fp(stdout);
exit(1);
}
/* 载入用户私钥 */
if (!SSL_CTX_use_PrivateKey_file(ctx, PKEY_FILE, SSL_FILETYPE_PEM) )
{
printf("载入用户私钥失败\n");
ERR_print_errors_fp(stdout);
exit(1);
}
/* 检查用户私钥是否正确 */
if (!SSL_CTX_check_private_key(ctx))
{
ERR_print_errors_fp(stdout);
exit(1);
}
SSL_CTX_set_cipher_list(ctx,"RC4-MD5");