Azure DevOps SQL DB Deploy任务登录阶段失败问题求助
解决Azure DevOps SQL DB Deploy连接Amazon RDS的SSL证书信任问题
问题核心
Azure DevOps代理服务器的受信任根证书存储中缺少Amazon RDS的根CA证书,导致SSL连接时证书链验证失败。即使设置Encrypt=false或TrustServerCertificate=true未生效,大概率是SQL DB Deploy任务的参数优先级覆盖了自定义配置。
解决方案步骤
1. 准备Amazon RDS根CA证书
- 获取对应RDS区域的根CA证书文件(如
rds-ca-2019-root.pem) - 将PEM格式转换为Windows兼容的CER格式(针对微软托管代理),执行命令:
openssl x509 -outform der -in rds-ca-2019-root.pem -out rds-ca-2019-root.cer
2. 在流水线中添加证书安装任务
使用PowerShell任务将证书导入代理服务器的受信任根证书存储:
# 假设证书已上传至流水线安全文件或代码仓库路径下 $certFilePath = "$(System.DefaultWorkingDirectory)/rds-ca-2019-root.cer" Import-Certificate -FilePath $certFilePath -CertStoreLocation Cert:\LocalMachine\Root
- 若使用自托管代理,可手动在代理服务器上安装证书,无需每次流水线运行重复执行
3. 配置SQL DB Deploy任务参数
- 在任务的Connection String中显式设置:
Server=[RDS端点];Database=[库名];User ID=[账号];Password=[密码];Encrypt=True - 在Additional Arguments中添加强制加密参数:
/p:EncryptConnection=True - 移除
TrustServerCertificate=true配置,确保证书链正常验证
4. 排查无效配置的常见原因
Encrypt=false未生效:SQL DB Deploy任务可能强制启用加密,建议保留加密并解决证书信任问题TrustServerCertificate=true未生效:任务内部参数覆盖了连接字符串设置,需在任务的Additional Arguments中添加/p:TrustServerCertificate=True(仅临时测试用,不建议长期使用)- 确认代理服务器可访问RDS对应端口(如SQL Server用1433,MySQL用3306)
内容的提问来源于stack exchange,提问作者Hugo Melo
相关产品推荐
相关产品推荐

