【C++】使用libhv实现一个双向证书认证的Https客户端(附带Go实现的服务端)

文章目录

    • 实现
      • 客户端
      • Https服务端
    • 原理
      • 双向认证基本原理
      • libhv客户端实现原理
    • 附加说明

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"; 

你可能感兴趣的:(安全,openssl,c++,go,密码学)