Совместная работа MS SQL 2005 и КриптоПро CSP\TLS

Публикация: 28 Сентябрь 2010 - 20:45, редакция: 19.10.2010 18:14

Как работают совместно MS SQL server 2005 и КриптоПро CSP\TLS?

Результаты проверки совместной работы MS SQL server 2005 и КриптоПро CSP\TLS.

Проверялись 2 машины (виртуальных), включённых в домен cp.ru – Win2000 Server и Win2003 Standart Edition. На каждой - все SP и обновления Win и IE6.

Каждая из них выполняла роль и сервера, и клиента (соединение с использованием Named Pipes).

Службы SQL работали под аккаунтом local system, для них было разрешено "взаимодействие с рабочим столом".

Клиенты – "SQL Server Management Studio" запускались из-под доменного пользователя (с правами локального администратора).

Серверные сертификаты:

  1. RSA (MS enhanced CSP)
  2. ГОСТ ..2001 (носитель – реестр, есть пароль)

В случае RSA соединение работало всегда, независимо от наличия и настроек КриптоПро CSP/TLS/Winlogon.

При ручном запуске служб в случае ГОСT спрашивается пароль на контейнер. Для 2000 этот пароль спрашивается при загрузке ОС после логина пользователя. Для 2003 при загрузке ОС – ожидание ввода на невидимом экране до истечения таймаута CSP (по умолчанию не ограничен).

Для ГОСТ результаты попыток установить соединение клиент-сервер в таблице (по строкам – клиентская машина, по столбцам - сервер):

  2003, 3.0, WL 2003,3.0 2000, 3.0, WL 2000, 3.0 2000, 2.0
2003, 3.0, WL ok - ok ok Ошибка TLS: "Предоставленный функции маркер неправилен"
2003, 3.0 - Ошибка SQL: "Главное конечное имя неверно"* Ошибка SQL: "Главное конечное имя неверно" - -
2000, 3.0, WL ok ok ok - -
2000, 3.0 Ошибка SQL: "Главное конечное имя неверно" - - Ошибка SQL: "Главное конечное имя неверно" -
2000, 2.0 Ошибка SQL: "Главное конечное имя неверно" - - - Ошибка TLS: "Предоставленный функции маркер неправилен"
 

3.0 = CSP + TLS 3.0.3293 КС2

2.0 = CSP + TLS 2.0.2097

Прочерк означает отсутствие данных.

*

A connection was successfully established with the server,
but then an error occurred during the pre-login handshake.
provider: SSL Provider, error: 0 - Главное конечное имя
неверно.) (.Net SqlClient Data Provider)
------------------------------
For help, click: http://go.microsoft.com/fwlink
?ProdName=Microsoft+SQL+Server&EvtSrc=MSSQLServer
&EvtID=-2146893022&LinkId=20476
------------------------------
Server Name: vm-vas-w2k-sql2
Error Number: -2146893022
Severity: 20
State: 0
------------------------------
Program Location:
   at System.Data.SqlClient.SqlInternalConnection
      .OnError(SqlException exception,
       Boolean breakConnection)
   at System.Data.SqlClient.TdsParser
      .ThrowExceptionAndWarning(TdsParserStateObject stateObj)
   at System.Data.SqlClient.TdsParser
      .ConsumePreLoginHandshake(Boolean encrypt,
       Boolean trustServerCert, Boolean& marsCapable)
   at System.Data.SqlClient.TdsParser
      .Connect(Boolean& useFailoverPartner,
       Boolean& failoverDemandDone, String host,
       String failoverPartner, String protocol,
       SqlInternalConnectionTds connHandler,
       Int64 timerExpire, Boolean encrypt,
       Boolean trustServerCert, Boolean integratedSecurity,
       SqlConnection owningObject, Boolean aliasLookup)
   at System.Data.SqlClient.SqlInternalConnectionTds
      .OpenLoginEnlist(SqlConnection owningObject,
       SqlConnectionString connectionOptions,
       String newPassword, Boolean redirectedUserInstance)
   at System.Data.SqlClient.SqlInternalConnectionTds.
      .ctor(DbConnectionPoolIdentity identity,
       SqlConnectionString connectionOptions,
       Object providerInfo, String newPassword,
       SqlConnection owningObject,
       Boolean redirectedUserInstance)
   at System.Data.SqlClient.SqlConnectionFactory
      .CreateConnection(DbConnectionOptions options,
       Object poolGroupProviderInfo, DbConnectionPool pool,
       DbConnection owningConnection)
   at System.Data.ProviderBase.DbConnectionFactory
      .CreateNonPooledConnection(DbConnection owningConnection,
       DbConnectionPoolGroup poolGroup)
   at System.Data.ProviderBase.DbConnectionFactory
      .GetConnection(DbConnection owningConnection)
   at System.Data.ProviderBase.DbConnectionClosed
      .OpenConnection(DbConnection outerConnection,
       DbConnectionFactory connectionFactory)
   at System.Data.SqlClient.SqlConnection.Open()
   at Microsoft.SqlServer.Management.UI.VSIntegration
      .ObjectExplorer.ObjectExplorer.ValidateConnection(
       UIConnectionInfo ci, IServerType server)
   at Microsoft.SqlServer.Management.UI.ConnectionDlg
      .Connector.ConnectionThreadUser()

Вывод: полностью работает только при наличии CSP/TLS 3.0 и Winlogon.

На 2003, 3.0, WL дополнительно проверялась работа КриптоПро УЦ 1.4 при использовании SQL server 2005 для размещения БД ЦС и ЦР. Ошибок нет.