AWS RDS(SQL Server):SSL连接 – 目标主体名称不正确

我有一个运行SQL Server 2012 Express的Amazon Web Services(AWS)关系数据库服务(RDS)实例。

我在客户机的受信任根证书颁发机构商店中安装了Amazon的aws.amazon.com/rds证书。

但是,当我连接到RDS实例(使用SQL Server Management Studio 2012)并勾选“encryption连接”时,出现以下错误:

与服务器build立了连接,但在login过程中发生错误。 (提供程序:SSL提供程序,错误:0 – 目标主体名称不正确。)(Microsoft SQL Server)

这是什么意思,我该如何解决? 谢谢!

为连接string添加此参数: TrustServerCertificate=true

解决在我的情况。

最初我们使用了一段时间似乎工作的短名称。 然而,由于某种原因后来它停止工作抛出这个错误消息。

当我们将其更改为FQDN时,它似乎解决了问题,并再次允许它连接,所以遇到此问题的任何人,作为一个快速解决scheme,可能要检查他们是否只使用服务器的短名称,如果是请尝试使用完全限定的域名。

发生该错误的原因是,Amazon不会将颁发给服务器的SSL证书中的主题名称设置为RDS控制台中显示的DNS名称。

如果RDS SQL实例是在VPC中启动的,则服务器的SSL证书将不能通过validation,因为其主题(CN)是与分配给实例的公用IP不同的IP地址。 在这种情况下, TrustServerCertificate=true是与SSL连接的唯一方式; 提供机密性(encryption),但服务器authentication不是。

如果RDS SQL实例是在EC2-Classic平台(即不在VPC中)上启动的,则服务器的SSL证书具有以下forms的DNS名称: ec2-NNN-NNN-NNN-NNN.RRRRR.amazonaws.com (其中,NNN-NNN-NNN-NNN是实例的公有IP地址,RRRRR取决于该地区)。 如果您在Management Studio中使用该DNS名称,则应该连接而不会出错。

我使用nslookup在RDS控制台中显示的DNS名称(即<name>.<region>.rds.amazon.com上发现了ec2 -… DNS名称。 可以使用networking监视器检查服务器提供的证书。

另请参阅“在SQL Server数据库实例中使用SSL”,位于http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/SQLServer.Procedural.html