1. 概述
本文介绍了如何基于openssl库建立tls加密通道连接。
2. 步骤
X509 *cert = NULL; // 客户端公钥证书指针
EVP_PKEY *key = NULL; // 客户端私钥证书指针
const SSL_METHOD *meth = NULL;
g_bio_err = dup_bio_err(FORMAT_TEXT);
SSL *con = NULL;
struct sockaddr_in serv_addr;
int sockfd = 0;
// 准备数据
// 选择客户端方法
meth = TLS_client_method();
// 初始化tls上下文
ssl_ctx = SSL_CTX_new(meth);
if (ssl_ctx == NULL) {
LOG(ERROR,"ca_client_connect -->> create ssl_ctx failed");
ERR_print_errors(g_bio_err);
SSL_CTX_free(ssl_ctx);
return -1;
}
// 加载公钥证书(用以服务端校验)
cert = load_cert("certfile.pem");
if (cert == NULL) {
LOG(ERROR, "load_cert() failed");
return -1;
}
// 加载私钥证书
key = load_key("keyfile.pem");
if (key == NULL) {
LOG(ERROR, "load_key() failed");
return -1;
}
// 将公钥证书应用到上下文