【发布时间】:2021-08-05 14:55:00
【问题描述】:
我有一个 SQL Server(它是一个 Google 云 SQL Server)。与它的连接需要使用 ssl 加密并使用用户名和密码进行身份验证。
我可以获取 ssl 证书的 .pem 文件:
我还有服务器的用户名、密码和 ip。在SqlClient connection string syntax 中,我能够找到定义用户名(uid)、密码(pwd)和ip(数据源)的标志。但我找不到如何放置 .pem 文件。
.pem 文件不属于连接字符串吗?如果是这样,我该如何使用它?
谢谢,
尼姆罗德
编辑:我尝试打开与trustServerCertificate=true 的连接,但仍然得到error: 40 - Could not open a connection to SQL Server。
解决方案:
SSL 不是问题。添加 TrustServerCertificate 和 Encrypt 标志应该允许 SSL。使用这些标志,客户端只接受来自服务器的任何证书,并继续进行 SSL 握手。
我的问题是我没有将客户端网络添加到云 SQL 的受信任网络列表中。即使云 SQL 设置为我们的公共 IP,这显然是一项要求。我将 0.0.0.0/0 网络添加为可信网络,并且连接正常。
【问题讨论】:
-
您使用的是public 还是private IP 地址?无论哪种方式,都需要遵循一些额外的配置步骤(参见前面的链接)。您也可以尝试使用Cloud SQL Auth Proxy,这是连接到 Cloud SQL 的推荐方式。
-
无论如何,您看到的错误
error: 40 - Could not open a connection to SQL Server似乎不是 SSL 问题。问题是您没有到达服务器。
标签: sql-server ssl iis connection-string google-cloud-sql