搭建SSL client端

该博客详细介绍了如何搭建SSL客户端,包括在TCP连接成功后开始SSL握手,准备工作的各个步骤如创建ssl_ctx、导入证书、初始化配置、设置回调函数等,以及handshake过程和后续的数据交互处理。
摘要由CSDN通过智能技术生成

1、首先建立TCP连接,在TCP建连成功的callback中,开始SSL握手。

2、握手前的准备工作:

(1)、创建应用层ssl_ctx维护。

typedef struct
{
   
 SSL_AT_Config_t SSL_AT_Config;          //not to free, just for AT config
 uint8_t         SSL_sockServeType;      //0:SSL 1:MQTTS 2:(HTTPS)
 //here to add ssl relate
 SSL_soket_state  sslsocket_state;       //true: this socket is config
 int8_t          ssl_socketid;           //real socket id
 int8_t   ssl_socketindex;  //socketindex
 uint8_t         contextID;
 int8_t    mqtts_socketindex;      //server for mqtts, mqtt socketindx
  //mbedtls relation
 mbedtls_ssl_context ssl_ctx; /* mbedtls ssl context */
 mbedtls_net_context net_ctx; /* Fill in socket id */
 mbedtls_ssl_config ssl_conf;  /* SSL configuration */
 mbedtls_entropy_context  entropy;
 mbedtls_ctr_drbg_context ctr_drbg;
 //mbedtls_x509_crt_profile profile;
  mbedtls_x509_crt cacert;    /* AppleHomekit CA */
 mbedtls_x509_crt clicert;   /* Accessory Certification */
 mbedtls_pk_context pkey;  /* Accessory LTSK */
 bool force_stop_handshake;
 } SSLApptcpContext_t;

(2)、将x509证书导入文件系统储存。

(3)、初始化ssl_ctx。

 mbedtls_ssl_init(&SSLApptcpContext_p->ssl_ctx);
 mbedtls_net_init(&SSLApptcpContext_p->net_ctx);
 mbedtls_ssl_config_init(&SSLApptcpContext_p->ssl_conf);
 mbedtls_entropy_init(&SSLApptcpContext_p->entropy);
 mbedtls_ctr_drbg_init(&SSLApptcpContext_p->ctr_drbg);
 mbedtls_x509_crt_init(&SSLApptcpContext_p->cacert);
 mbedtls_x509_crt_init(&SSLApptcpContext_p->clicert);
 mbedtls_pk_init(&SSLApptcpContext_p->pkey);

(4)、配置随机数生成方式。

 if ((ret =
OpenSSL并不是专用于实现国密SSL VPN的工具,它主要用于加密通信,包括支持TLS/SSL协议。如果你需要搭建支持国产密码算法的SSL隧道,通常会结合其他工具如OpenSSL与国内的加密库,例如SM2、SM3等。以下是简化的步骤概述: 1. **安装必要的软件**: - 安装OpenSSL:根据你的操作系统,可能是apt-get(Linux)、yum(CentOS/RHEL)、brew(macOS)或Windows包管理器。 - 安装中国国密算法支持:如果是Linux,可能会有相应的开源项目提供SM2/SM3的封装,比如Libsm2。 2. **配置OpenSSL**: - 编译OpenSSL时启用对国密算法的支持,这取决于具体的版本和编译选项。查看OpenSSL文档了解如何编译和配置。 3. **获取国密证书**: - 使用国密证书颁发机构签发的证书和私钥,作为服务器和客户端的身份验证基础。这些证书应该包含SM2/SM3支持的公钥。 4. **创建SSL连接**: - 使用openssl s_server命令启动一个带国密支持的SSL监听服务,指定使用SM2/SM3的私钥文件作为身份验证密钥。 ```shell openssl s_server -cert server.crt -key server.key -cipher SM2 ... ``` 同样,客户端可以使用openssl s_client与之交互。 5. **建立隧道**: - 在服务器,通过HTTPS或SNI(Server Name Indication)指定使用SM2/SM3的连接。 - 客户端则连接到这个特定的服务器地址并选择相应的国密套件进行加密通信。 6. **测试连接**: - 确保客户端和服务能够成功加密通信,并能通过隧道传输数据。 注意:以上步骤可能存在一定的复杂性和依赖性,实际操作过程中可能需要查阅更多相关的技术文档和指南。此外,由于政策和标准差异,某些环境可能不允许直接使用OpenSSL处理国密算法,你需要确保你所在地区的法规允许这样做。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值