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

如何解决SSMS无法连接Docker容器中SQL Server的TLS问题?

SQL Server Docker容器TLS配置与连接排查指南

一、进入容器检查当前TLS配置

  • 先进入运行中的SQL Server容器:
    docker exec -it <容器名/容器ID> bash
    
  • 使用mssql-conf工具查看TLS相关配置项:
    /opt/mssql/bin/mssql-conf list | grep tls
    
    输出会包含network.tls.enabled(是否启用TLS)、network.tls.protocol(允许的TLS协议版本)等关键配置

二、配置容器内SQL Server的TLS版本

1. 临时配置(容器重启后失效)

在容器内执行以下命令:

# 启用TLS并指定允许的协议(示例为TLS 1.2)
/opt/mssql/bin/mssql-conf set network.tls.enabled true
/opt/mssql/bin/mssql-conf set network.tls.protocol 1.2
# 重启SQL Server服务使配置生效
systemctl restart mssql-server

2. 持久化配置(容器重启后保留)

方式一:启动容器时通过环境变量指定

启动容器时添加TLS相关环境变量:

docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=YourStrongPassw0rd" \
  -e "MSSQL_TLS_PROTOCOL=1.2" -e "MSSQL_TLS_ENABLED=true" \
  -p 1433:1433 --name sqlserver -d mcr.microsoft.com/mssql/server:2019-latest

方式二:挂载自定义配置文件

  • 在宿主机创建mssql.conf文件,写入配置内容:
    [network]
    tls.enabled = true
    tls.protocol = 1.2
    
  • 启动容器时挂载该文件到容器内指定路径:
    docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=YourStrongPassw0rd" \
      -v /宿主机本地路径/mssql.conf:/var/opt/mssql/mssql.conf \
      -p 1433:1433 --name sqlserver -d mcr.microsoft.com/mssql/server:2019-latest
    

三、验证TLS连接有效性

使用openssl工具测试TLS 1.2连接:

# 替换<容器IP>为实际容器IP地址
openssl s_client -connect <容器IP>:1433 -tls1_2

若连接成功,会输出TLS握手的详细信息,证明容器端TLS配置生效

四、额外排查要点

  • 确认宿主机防火墙未拦截1433端口的入站/出站流量
  • 检查SSMS连接属性的「安全性」标签,确保勾选加密连接选项
  • 若使用自签名证书,需将证书导入宿主机的信任根证书库(Windows系统可通过证书管理器操作)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 09:32:17