libhv是一个国产的网络库,在v1.2.5版本提供了SSL客户端支持,可以便携地实现双向认证。
实现
客户端
废话不多说,先show the code:
#include "hv/http_client.h"
using namespace hv;
int main() {
// 创建Client
int ret;
http_client_t *cli = http_client_new(NULL, 8080, 1); // 这里参数填什么无所谓
if(cli == NULL) {
printf("Error: cli is null\n");
return 0;
}
// 设置客户端证书
hssl_ctx_opt_t *ssl_opt = new hssl_ctx_opt_t;
ssl_opt->verify_peer = 1; // 认证对方身份
ssl_opt->endpoint = HSSL_CLIENT;
ssl_opt->ca_path = NULL; // 可以为一个证书目录,参见https://www.openssl.org/docs/man1.0.2/man3/SSL_CTX_load_verify_locations.html
ssl_opt->ca_file = "cert/ca.crt"; // CA证书
ssl_opt->crt_file = "cert/client.crt"; // 客户端证书
ssl_opt->key_file = "cert/client_rsa_private.pem"; // 客户端私钥
hssl_ctx_t ctx = hssl_ctx_new(ssl_opt); // 生成一个hssl_ctx
if