Проблема при SSL соединении с SQL Server

Я хочу подключиться к своей локальной базе данных SQL Server 2008, используя SSL.

Я не установил никаких сертификатов на сервер, потому что в соответствии с этим http://msdn.microsoft.com/en-us/library/ms189067.aspx

Если доверенный сертификат не установлен, SQL Server будет создавать самозаверяющий сертификат при запуске экземпляра и использовать самозаверяющий сертификат для шифрования учетных данных.

Это простой код

SqlConnection connection = 
    new SqlConnection(@"Data Source=somePC\SqlExpress;Initial Catalog=test;integrated security = sspi;Persist Security Info=True;Encrypt=true;");

SqlCommand command = new SqlCommand("Select count(*) from Employee", connection);
connection.Open();
int employeeCount = (int)command.ExecuteScalar();
connection.Close();`

Обратите внимание, что encrypt=true;

но на connection.Open() Возникает исключение с сообщением

Соединение с сервером было успешно установлено, но во время рукопожатия перед входом в систему произошла ошибка. (поставщик: поставщик SSL, ошибка: 0 - цепочка сертификатов была выдана доверенным органом).

Могу ли я утвердить этот самоподписанный сертификат?

2 ответа

Вы должны сказать своему клиенту, чтобы он доверял любому сертификату. Самозаверяющий сертификат не будет доверенным, поскольку он не подписан ни одним ЦС, которому доверяет ваш компьютер. Измените ваше соединение, добавив TrustServerCertificate=True следующим образом:

SqlConnection connection = 
    new SqlConnection(@"Data Source=somePC\SqlExpress;Initial Catalog=test;integrated security = sspi;Persist Security Info=True;Encrypt=true; TrustServerCertificate=True");

SqlCommand command = new SqlCommand("Select count(*) from Employee", connection);
connection.Open();
int employeeCount = (int)command.ExecuteScalar();
connection.Close();

Чтобы RPC через Http работал, у вас должен быть установлен и настроен корневой сертификат доверенного ЦС. В ситуации, когда вы используете самозаверяющий сертификат, вам нужно будет установить сертификат в хранилище доверенных корневых центров сертификации.

Установите сертификат в доверенное корневое хранилище.

Другие вопросы по тегам