You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为单条连接降低OpenSSL SECLEVEL而非全局配置?

单连接解决isql连接无TLS支持数据库的0x2746错误

问题背景

使用isql连接不支持TLS加密的SQL Server数据库时,遇到错误码0x2746(提示无TLS支持)。全局降低/etc/ssl/openssl.cnf中SECLEVEL到0可解决问题,但会带来系统级安全隐患,需实现单连接级别的配置。

可行解决方案

方案1:临时指定OpenSSL配置文件(仅当前isql进程生效)

OpenSSL允许通过环境变量OPENSSL_CONF指定自定义配置文件,仅对当前进程生效:

  1. 创建临时配置文件(如~/temp-openssl.cnf),内容如下:
[system_default_sect]
CipherString = DEFAULT@SECLEVEL=0
  1. 运行isql时临时加载该配置:
OPENSSL_CONF=~/temp-openssl.cnf isql -v -k "Driver={Driver SQL Server};Server=mysql-server;Database=DATABASE;UID=user;PWD=pwd;"

此方式仅影响该isql实例,系统其他进程仍使用默认高安全级别配置。

方案2:修改ODBC连接字符串强制禁用加密(优先推荐)

若使用的SQL Server ODBC驱动支持,可直接在连接字符串中添加加密控制参数,无需修改OpenSSL配置:

  • 对于旧版Driver SQL Server驱动:
isql -v -k "Driver={Driver SQL Server};Server=mysql-server;Database=DATABASE;UID=user;PWD=pwd;Encrypt=no;"
  • 对于新版ODBC Driver 17/18 for SQL Server驱动:
isql -v -k "Driver={ODBC Driver 17 for SQL Server};Server=mysql-server;Database=DATABASE;UID=user;PWD=pwd;Encrypt=optional;"

该方法直接跳过TLS加密协商,从根源避免安全级别冲突,安全性更高。

为什么之前的自定义配置无效

OpenSSL默认仅读取配置文件中的[system_default_sect]节,自定义的[mysql-server]节不会被自动加载,isql及ODBC驱动也不会主动识别这类自定义节,因此之前的配置无法生效。

内容的提问来源于stack exchange,提问作者Ai4l2s

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 03:13:12