如何在OpenSSL库中设置协议的最小和最大版本
OpenSSL 设置 TLS 最小/最大协议版本的三个常用位置
1. 业务代码中显式调用API设置
创建SSL_CTX上下文后直接调用对应接口赋值,优先级最高,会覆盖全局配置和编译默认值:
// 示例:设置最小支持TLS1.2,最大支持TLS1.3 SSL_CTX_set_min_proto_version(ctx, TLS1_2_VERSION); SSL_CTX_set_max_proto_version(ctx, TLS1_3_VERSION);
你当前调用SSL_CTX_get_min_proto_version返回0,就是因为没有显式执行过上述赋值,也没有加载到有效的系统默认配置。
2. 修改OpenSSL全局配置文件
无需修改代码,对所有调用该OpenSSL库的程序生效:
- 找到系统的openssl.cnf配置文件,Linux默认路径为
/etc/ssl/openssl.cnf,Windows默认在OpenSSL安装目录的bin子目录下 - 找到
[system_default_sect]配置段,添加/修改如下配置:
[system_default_sect] MinProtocol = TLSv1.2 MaxProtocol = TLSv1.2
修改后保存重启程序即可生效,符合你提到的测试用例校验规则。
3. 编译OpenSSL库时指定全局默认值
编译源码阶段就固化默认值,不需要后续改配置和代码:
编译时给./config指令追加参数即可,示例:
./config -DOPENSSL_TLS_MIN_VERSION=TLS1_2_VERSION -DOPENSSL_TLS_MAX_VERSION=TLS1_2_VERSION
编译安装后的库默认的协议版本范围就会是你指定的值。
内容的提问来源于stack exchange,提问作者buttontech
相关产品推荐
相关产品推荐

