Docker容器部署SQL Server后sqlcmd连接SSL证书验证失败求助
解决Docker中SQL Server外部连接SSL证书验证失败问题
问题场景
- 创建SQL Server容器命令:
$ sudo docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Adminxyz22#" -p 1433:1433 --name sql3 -d mcr.microsoft.com/mssql/server:2022-latest bd7603e0df04a9ec23cfb089ee43bf5723ab4f1c881aefaf896c9ef11d2d909f - 容器状态检查结果:
$ sudo docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 285722569f6e mcr.microsoft.com/mssql/server:2022-latest "/opt/mssql/bin/perm…" 9 minutes ago Exited (0) 6 minutes ago - 外部使用
sqlcmd连接报错:sqlcmd -S localhost,1433 -U SA -P "Adminxyz22#" Sqlcmd: Error: Microsoft ODBC Driver 18 for SQL Server : SSL Provider: [error:0A000086:SSL routines::certificate verify failed:self-signed certificate]. Sqlcmd: Error: Microsoft ODBC Driver 18 for SQL Server : Client unable to establish connection. - 容器内部使用
sqlcmd可正常连接:$ sudo docker exec -it bd7603e0df04 /bin/bash mssql@bd7603e0df04:/$ /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "Adminxyz22#" 1>
解决方案
方法1:连接时跳过SSL证书验证(测试环境适用)
在sqlcmd命令中添加-C参数,强制信任服务器自签名证书:
sqlcmd -S localhost,1433 -U SA -P "Adminxyz22#" -C
方法2:配置客户端信任SQL Server自签名证书(生产环境推荐)
- 从容器中导出SQL Server的自签名证书:
sudo docker cp bd7603e0df04:/var/opt/mssql/data/mssql.pem ./mssql.pem - 将证书添加到系统信任存储:
- Linux系统:
sudo cp ./mssql.pem /usr/local/share/ca-certificates/mssql.crt sudo update-ca-certificates - Windows系统:
双击mssql.pem文件,通过向导将证书导入「受信任的根证书颁发机构」存储。
- Linux系统:
- 重新执行
sqlcmd连接命令即可正常访问。
方法3:确保目标容器处于运行状态
先检查sql3容器的运行状态:
sudo docker ps | grep sql3
如果容器未运行,执行启动命令:
sudo docker start sql3
内容的提问来源于stack exchange,提问作者user51
相关产品推荐
相关产品推荐

