Mac环境下.NET Core 6连接Docker中SQL Edge服务器遇证书验证问题
解决Mac上.NET Core 6连接Docker中SQL Edge的证书验证问题
问题分析
你遇到的错误核心是SQL Edge的自签名证书不被本地信任,同时连接字符串里的Trusted_Connection=True在Mac环境下完全不适用——这个参数是Windows集成认证的配置,而你用的是SA账号登录,根本不需要这个参数,反而会干扰连接逻辑。
解决方案
1. 修正连接字符串
修改appsettings.json中的连接字符串,移除无效的Trusted_Connection=True,添加TrustServerCertificate=True来跳过证书验证(仅适合开发环境),同时明确指定端口号:
"TheatreApiDb":"Server=localhost,1433;Database=Theatre;User=SA;Password=P@ssw0rd;TrustServerCertificate=True;"
TrustServerCertificate=True:告诉客户端信任SQL Server的自签名证书,直接解决握手时的证书拒绝问题。- 端口号
1433:SQL Edge默认容器端口,如果你启动Docker时映射了其他端口(比如-p 1434:1433),要把连接字符串里的端口改成1434。
2. 确认Docker端口映射
确保启动SQL Edge容器时做了正确的端口映射,命令示例:
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=P@ssw0rd" -p 1433:1433 -d mcr.microsoft.com/azure-sql-edge
-p 1433:1433表示把容器的1433端口映射到主机的1433端口,没有这一步的话,本地无法通过localhost访问容器内的SQL Edge。
3. 生产环境注意事项
如果是生产部署,不要用TrustServerCertificate=True,应该将SQL Edge的证书导入到Mac的系统信任列表中,避免安全风险。
内容的提问来源于stack exchange,提问作者Amit Kumar Panda
相关产品推荐
相关产品推荐

