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

Docker容器中SQL Server 2017与Java应用的双向SSL认证配置问询

Docker容器中SQL Server的双向SSL配置与验证方法

结论先行:现在Docker部署的SQL Server已经支持双向SSL(客户端证书认证),2020年的限制已经在后续版本更新中移除了,放心配置就行。

一、SQL Server容器端配置

1. 准备证书文件

除了你已经配置好的服务器证书,还需要把客户端证书的根CA证书放到容器内的SQL Server证书目录(默认是/var/opt/mssql/secrets/),注意给证书设置正确的权限:

# 进入容器执行,或者在宿主机挂载时提前设置权限
chown mssql:mssql /var/opt/mssql/secrets/client-ca.crt

2. 更新mssql.conf

在你已有的SSL配置段里,新增客户端认证相关参数:

[network]
tls = on
tls-cert = /var/opt/mssql/secrets/server-cert.crt
tls-key = /var/opt/mssql/secrets/server-key.key
# 新增以下配置
tls-ca = /var/opt/mssql/secrets/client-ca.crt
enforce-tls = on
client-certificate = required
  • tls-ca指定SQL Server信任的客户端根CA,只有这个CA签发的客户端证书才会被认可
  • client-certificate = required强制要求所有连接必须提供有效客户端证书,直接拒绝无证书的连接请求

3. 重启容器生效

docker restart <你的SQL Server容器名>

二、Java客户端适配

1. 处理客户端证书

如果你的客户端证书是pfx格式,先转成Java常用的JKS格式:

keytool -importkeystore -srckeystore client-cert.pfx -srcstoretype pkcs12 -destkeystore client-keystore.jks -deststoretype JKS

然后把根CA证书导入Java的系统信任库(也可以用自定义信任库):

keytool -importcert -file client-ca.crt -alias client-ca -keystore $JAVA_HOME/jre/lib/security/cacerts

默认cacerts的密码是changeit,按需修改即可。

2. 修改JDBC连接串

在原有加密连接的基础上,加上客户端证书的配置参数:

jdbc:sqlserver://<SQL Server容器IP/域名>:1433;databaseName=<你的数据库名>;encrypt=true;trustServerCertificate=false;clientCertificate=file:/path/to/client-keystore.jks;clientCertificatePassword=<你的密钥库密码>

三、验证双向SSL是否生效

1. 服务器端验证

  • 查看容器日志,确认有客户端认证成功的日志:
    docker logs <你的SQL Server容器名> | grep "Client certificate authentication succeeded"
    
  • 尝试用无证书的客户端连接(比如sqlcmd不带证书参数),应该直接被拒绝:
    sqlcmd -S <主机IP>,1433 -U <用户名> -P <密码> -d <数据库名> -N
    
    会返回类似Login failed. The server requires client authentication.的错误,说明强制认证规则生效。

2. 客户端验证

  • 运行你的Java应用,能正常执行数据库操作就说明客户端证书认证通过;如果证书无效、未配置或者CA不被信任,应用会抛出SQLServerException: Login failed. The server requires client authentication.或类似的信任异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 08:25:25