27.04.2007 13:10:48нестабильная работа SSL Ответов: 14
Сергей
Суть проблемы в следующем:
С использованием вашего тестового ЦС сделано и установлено 2 серверных сертификата (аутентификация сервера). Один сертификат использует ГОСТ Р 34.10-2001 (512) public key, второй сертификат RSA (512) public key.
Во всем остальном сертификаты одинаковы.

Для выявления проблемы сделано тестовое клиент-серверное приложение. На стороне сервера под IIS крутится web-служба. IIS настроен таким образом, что требует SSL, но использует только серверный сертификат (ignore client certificate).
На стороне клиента крутится приложение, которое по таймеру с некоторым интервалом обращается к службе.

Вызывающий код:
private void timer1_Tick(object sender, System.EventArgs e)
{
try
{
time = srv.GetServerDateTime();
param = srv.GetConfigParam("SecSystemOn");
counter++;
txtCounter.Text = counter.ToString();
this.Refresh();
}
catch(Exception ex)
{
timer1.Enabled = false;
MessageBox.Show(ex.Message);
}
}
Циклически происходит два обращения к методам одной и той же web-службы.

Результаты:

При использовании сертификата с RSA public key, спокойно доходит до 100 циклов (т.е. 200 обращений) при использовании интервала таймера 5 сек и 1 сек.
Т.е. каждую секунду генерируется два вызова. Ни разу не падало.

При использовании сертификатат с ГОСТ public key, ни разу не перешло границу в 20 вызовов (единичный случай). Обычно падает на 7-8 цикле.
При этом интервал вызовов увеличен – 5 сек, 8 сек, 10 сек.
Ошибки самые разнообразные:
StackOverflow in system.dll
NullReferanseException in mscorelib.dll
IO.Exception: Could not create transport connection.

Был бы очень признателен за советы и комментарии, т.к. ситуацию надо решать и при этом задействовать ГОСТ.
 
Ответы:
27.04.2007 15:17:21maxdm
Какая версия CSP?
Существует проблема в реализации ssl в .Net. Есть private hotfix от MS. А если установлено CSP 3.0, то имеет смысл установить КриптоПро Winlogon
27.04.2007 15:48:45Сергей
На сервере КС1 3.0.3300.2.
На клиенте 2.0.
Ошибки происходят на клиенте. Если это же самое тестовое приложение запустить прямо на сервере, то оно просто виснет в районе 10 цикла.
В логах IIS видно, что происходят обращения к службе. Каждому обращению соответствуют нескользко записей - два без учетных данных пользователя - получают ошибку 401. А затем, третье - с учетными данными - получает ответ 200 (ок). Это нормальная ситуация, она описывается и у Microsoft и также работает на RSA сертификате.
Только при установке ГОСТ-сертификата, эта цепочка обращений прерывается. Т.е. видно, что обращения шли, а потом внезапно останавливается на 401 (запрос без учетных данных) и клиент больше уже не запрашивает ничего. Программа при этом зависает - ждет ответа. Но при этом на сервер никто не стучится уже.

Попробовали другого клиента с КС1 3.0.3300.2.
Ситуация как и с сервером. Ошибок нет, но стучаться на сервер перестает.
Можно поставить Winlogon на клиента, но при этом не использовать его для аутентификации?
27.04.2007 16:12:38maxdm
можно
27.04.2007 17:04:28Сергей
Спасибо, установка WinLogon помогла.

Хотелось бы понять причины предыдущих трудностей и способ устранения. WinLogon подменяет какую-то библиотеку на более новую версию?
Ведь кроме установки WinLogon никаие действия не выполнялись (ни изменение настроек, ни развертывание инфраструктуры).
Возможно ли распространение в виде библиотек (dll) или только полноценный истрибутив?
Это связанно с лицензированием и механизмом защиты?
В случае развертывания клиент-серверной системы, потребуется установка CSP и WinLogon на каждого клиента? Есть ли для такого случая какой-то способ дистрибуции, чтобы не выполнять вручную установку setup на каждом клиенте?
29.04.2007 0:48:35maxdm
Повторюсь - есть ошибка в .Net реализации Ssl - и, как следствие, наведенная ошибка в нашей реализации Tls.
C нашей стороны она исправлена в Winlogon (перевод любых версий CSP 3.0 на исправленный SSP/AP). Также есть hotfix MS, который, скорее всего, мы сможем предоставить.
В SP для 3.0 это исправление включено только для КС2. Для 2.0 - исправлено в последних билдах.
Вроде бы нет никаких проблем в совместной установке CSP и Winlogon (для последнего не нужно никаких лицензий, если не использовать функциональность входа в домен по scard, в некотором смысле это преSP для CSP)
10.05.2007 16:29:53Дмитрий
Добрый день, испытываем аналогичные проблемы с ssl, не подскажите-ли конкретное название hotfix от microsoft, исправляющего эту ошибку?
10.05.2007 18:32:18Василий
Дмитрию.
Отправил на e-mail
06.06.2007 1:08:20Роман Стефанов
А не могли бы и мне решенице кинуть?
Спасибо
06.06.2007 11:20:05Василий
Отправил.
18.06.2007 14:58:21Максим
Здравствуйте! Сбросьте и мне пожалуйста на мэйл название (в идеале линк) этого хот-фикса от МС - та же проблема.
18.06.2007 15:01:55Максим
И еще скажите, будет ли достаточно установки этой заплаты на клиентские машины или придется и WinLogon ставить?
18.06.2007 19:17:52Василий
Либо хотфикс, либо WinLogon.
Ответил на почту.
22.06.2007 12:05:55Стас
Можно мне на почто тоже скинуть?
22.06.2007 12:56:32Василий
Ответил на почту