У меня есть экземпляр службы реляционной базы данных (RDS) Amazon Web Services (AWS) с SQL Server 2012 Express.
Я установил Amazon aws.amazon.com/rds сертификат в хранилище доверенных корневых центров сертификации клиентского компьютера.
Однако, когда я подключаюсь к экземпляру RDS (используя SQL Server Management Studio 2012) и устанавливаю флажок «Зашифровать соединение», я получаю следующую ошибку:
Соединение с сервером было успешно установлено, но во время входа в систему произошла ошибка. (поставщик: поставщик SSL, ошибка: 0 - целевое основное имя неверно.) (Microsoft SQL Server)
Что это значит и как это исправить? Спасибо!
Добавьте этот параметр для строки подключения: TrustServerCertificate=true
Решено в моем случае.
Первоначально мы использовали короткое имя, которое, казалось, какое-то время работало. Однако по какой-то причине позже он перестал работать, выдав это сообщение об ошибке.
Когда мы изменили его на полное доменное имя, это, похоже, решило проблему и снова позволило ему подключиться, поэтому любой, у кого возникла эта проблема, в качестве быстрого решения может захотеть проверить, используют ли они только короткое имя сервера и, если да , попробуйте использовать полное доменное имя.
Ошибка возникает из-за того, что Amazon не устанавливает имя субъекта в сертификате SSL, выданном серверу, на имя DNS, отображаемое в консоли RDS.
Если экземпляр RDS SQL был запущен в VPC, SSL-сертификат сервера, к сожалению, никогда не пройдет проверку, поскольку его субъект (CN) - это IP-адрес, отличный от общедоступного IP-адреса, назначенного экземпляру. TrustServerCertificate=true
это единственный способ подключиться с помощью SSL в этом случае; обеспечивается конфиденциальность (шифрование), а аутентификация сервера - нет.
Если экземпляр RDS SQL был запущен на платформе EC2-Classic (т.е. не в VPC), SSL-сертификат сервера имеет в качестве субъекта DNS-имя в форме ec2-NNN-NNN-NNN-NNN.RRRRR.amazonaws.com
(где NNN-NNN-NNN-NNN - это общедоступный IP-адрес экземпляра, а RRRRR зависит от региона). Если вы используете это DNS-имя в Management Studio, оно должно подключиться без ошибок.
Я обнаружил DNS-имя ec2 -..., используя nslookup для DNS-имени, отображаемого в консоли RDS, т.е. <name>.<region>.rds.amazon.com
. Сертификат, представленный сервером, можно проверить с помощью сетевого монитора.
См. Также «Использование SSL с экземпляром БД SQL Server» на http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/SQLServer.Procedural.html