简介
- TLS(Transport Layer Security),是一种用于保护网络通信安全性的加密协议。它建立在传输层协议(例如TCP)之上,用于在客户端和服务器之间创建安全的通信通道
struct mg_tls_opts
简介:
- TLS初始化结构
原型:
1
2
3
4
5
6
7
8
9struct mg_tls_opts {
const char *ca; // CA certificate file. For both listeners and clients
const char *crl; // Certificate Revocation List. For clients
const char *cert; // Certificate
const char *certkey; // Certificate key
const char *ciphers; // Cipher list
struct mg_str srvname; // If not empty, enables server name verification
struct mg_fs *fs; // FS API for reading certificate files
};参数:
- ca – 证书颁发机构。可以是文件名或字符串。用于验证另一端发送给我们的证书。如果为空,则禁用证书检查。
- crl – 证书吊销列表。可以是文件名或字符串。用于验证另一端发送给我们的证书。如果为空,则禁用证书吊销检查。
- cert – 我们自己的证书。可以是文件名或字符串。如果为NULL,则不与对方进行认证。
- certkey – 证书的密钥。有时,证书和它的密钥绑定在一个.pem文件中,在这种情况下,cert和certkey的值可能是相同的
- ciphers – 允许使用的密码列表
- srvname – 启用服务器名称验证
注:
- 如果ca和cert都设置了,那么所谓的双向TLS就启用了,这时双方都要互相验证。通常,服务器端连接同时设置ca和cert,而客户端只设置ca。
mg_tls_init
简介:
- 在给定连接上初始化TLS
原型:
1
void mg_tls_init(struct mg_connection *c, struct mg_tls_opts *opts);
参数:
- c – 需要初始化TLS的连接
- opts – TLS初始化参数
返回值:
- 无
示例:
1
2struct mg_tls_opts opts = {.cert = "ca.pem"};
mg_tls_init(c, &opts);注:
- mbedTLS使用mg_random作为RNG。mg_random可以通过设置MG_ENABLE_CUSTOM_RANDOM=1并定义自己的mg_random()实现来覆盖。