由于缺少 SSL 加密,连接到 SQL Azure 数据库失败

Posted

技术标签:

【中文标题】由于缺少 SSL 加密,连接到 SQL Azure 数据库失败【英文标题】:Connecting to SQL Azure Database fails due to missing SSL encryption 【发布时间】:2015-08-10 23:40:57 【问题描述】:

我正在我的 Mac 上学习 ASP.NET 5 (vNext)。在最后一天,我一直在尝试连接到我的 SQL Azure 数据库。在那次尝试中,我一直在使用以下代码:

var serverName = "[protected]";
var dbName = "[protected]";
var userId = "[protected]";
var password = "[protected]";
var sql = "SELECT * FROM Customer";

using (var database = new SqlConnection("Server=tcp." + serverName + ".database.windows.net,1433;Database=" + dbName + ";User Id=" + userId + ";Password=" + password + ";Trusted_Connection=False;Encrypt=True;Max Pool Size=25"))

  database.Open();
  return await database.QueryAsync<T>(sql);                     

执行此代码时,会引发异常。异常详情如下所示:

类型: System.NotImplementedException

留言: 客户端和服务器之间发送的数据没有实现 SSL 加密。

更新 我了解到此时在 Mac OS X 上运行的框架中的加密isn't supported。因此,我将连接字符串更新为如下所示:

var connectionString = "Persist Security Info=False;Integrated Security=true;Initial Catalog=" + dbName + ";server=" + serverName + ";User Id=" + userId + ";Password=" + password;

不过,当我使用上面的连接字符串时,我得到了以下错误。

类型: System.Data.SqlClient.SqlException

留言: 服务器不存在或连接被拒绝。

我已确认我的 IP 地址未被 Azure 阻止。我通过登录 Azure 门户并从 Silverlight 应用程序管理 SQL Server 数据库来做到这一点。但是,我仍然不确定为什么会收到此错误。

如果我理解正确,目前无​​法从 Mac 上运行的 ASP.NET 5 连接到 SQL Azure 数据库。真的吗?如果不是真的,我做错了什么?

【问题讨论】:

你使用的是哪个框架? @PanagiotisKanavos 我正在使用 ASP.NET 5 (vNext)。我正在尝试通过“EntityFramework.SqlServer”:“7.0.0-*”包中的System.Data.SqlClient.SqlConnection 进行连接。 我更近了。我已经用更多细节更新了这个问题。 @BrianAtkins 我刚刚确认它没有被阻止。我可以通过门户管理它。另外,我通过ifconfig | grep "inet " | grep -v 127.0.0.1获得了IP地址。我确认这两个都在允许 IP 地址列表中列入白名单。我仍然遇到同样的错误。 在您的新连接字符串中,我没有看到 database.windows.net 作为服务器名称的一部分。您是否将其包含在您的服务器名称中? 【参考方案1】:

如您所知,Mac 上的 vNext 处于公开预览阶段。 我们仍在努力提供 SQL 连接。 Mac 上尚不支持 SSL 加密,Azure SQL DB 需要一个。该项目正在筹备中,一旦我们有东西要分享,我们会通知您。 与此同时,如果您有任何其他问题,请告诉我。

最好, 认识巴格杰夫 微软项目经理

【讨论】:

还有更新吗?这似乎仍然不受支持 - 如果您正在运行任何服务器访问 Azure SQL DB(这几乎是核心服务器场景),这是一个关键场景 集成安全性在 .NET Core 上尚不可用。我认为这就是原帖失败的原因。您可以尝试启用 SSL 的 SQL 身份验证,看看是否有效? (设置encrypt=true)。 这个问题还是没有答案吗? @Jonathan - 您使用的是哪个版本的 .NET Core?更具体地说,您使用的是哪个版本的 System.Data.SqlClient? 【参考方案2】:

切换到使用单声道作为构建目标。这应该使您可以访问实体框架中的 ssl。

【讨论】:

【参考方案3】:

我知道这不是您要寻找的答案,但 SQL Azure 需要 SSL per https://msdn.microsoft.com/en-us/library/azure/ff394108.aspx。

我敢肯定,在向 OS X 添加 SSL 支持(通过 Mono 或 CoreCLR)之前,您会陷入困境。

【讨论】:

以上是关于由于缺少 SSL 加密,连接到 SQL Azure 数据库失败的主要内容,如果未能解决你的问题,请参考以下文章

由于证书不受信任,无法从 Azure SF 连接到外部 https

如何使用 PDO ssl 连接到 azure mysql 数据库

无法使用 PHP 和 Codeigniter 从 PHP Azure 连接到 SQL Server Azure

使用 dplyr 连接到 SSL 加密的远程数据库

如何从本地使用 SSL 加密连接到 AWS RDS?

SQL Server 配置管理器的下拉列表中缺少 SSL 证书