Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline FoKycHuK  
#1 Оставлено : 25 января 2017 г. 13:10:45(UTC)
FoKycHuK

Статус: Новичок

Группы: Участники
Зарегистрирован: 13.01.2017(UTC)
Сообщений: 4

Сказал(а) «Спасибо»: 3 раз
Здравствуйте!

С недавнего времени перестал работать метод SignedXml.CheckSignature из библиотеки System.Security.dll
Вот код, который воспроизводит проблему:
Цитата:
var content = File.ReadAllText("my.cer");
var rawCertData = Convert.FromBase64String(content);
var cert = new X509Certificate2(rawCertData);
var a = new SignedXml();
a.CheckSignature(cert, true);

Для любого ГОСТовского серта он завершается вот с такой ошибкой:
Цитата:
Unhandled Exception: System.NotSupportedException: The certificate key algorithm
is not supported.
at System.Security.Cryptography.X509Certificates.X509CertificateExtensions.Ge
tAnyPublicKey(X509Certificate2 c)
at System.Security.Cryptography.Xml.SignedXml.CheckSignature(X509Certificate2
certificate, Boolean verifySignatureOnly)
at ConsoleApplication1.Program.Main(String[] args)

В случае, когда все хорошо, этот код выкинет другую ошибку: ArgumentNullException: Value is null (или что-то такое). Это нормально, потому что мы пытаемся проверить через пустую Xml. Однако исключение, которое я привел выше, не зависит от содержимого Xml, поэтому такой код для отладки данной проблемы корректный.

Мы провели небольшое исследование этой проблемы и выяснили, что она не зависит от версий криптопро CSP и криптопро .NET, не зависит от ОС.
Она появляется при установке .NET Framework 4.6.2 и уходит после ее удаления, и последующей установки любой другой версии.
Мы считаем, что это связано с тем, что в этом обновлении была переработана библиотека System.Security.dll, в частности именно этот метод.
Вероятно так же могли перестать работать и другие методы работы с сертификатом.

Вот декомпилированные исходники метода CheckSignature из двух библиотек System.Security.dll:
Версия библиотеки 4.6.1073.0, что соответствует .NET Framework 4.6.1: http://pastebin.com/d6dpUgFn
Версия библиотеки 4.6.1590.0, что соответствует .NET Framework 4.6.2: http://pastebin.com/8GQvECEi

Т.к. развал происходит в методе GetAnyPublicKey, которого вообще не было в 4.6.1 и ранее, привожу и его исходники: http://pastebin.com/9XyYmdy6
Отсюда исключение и выбрасывается.

Стоит ли ждать поддержки 4.6.2?


Использовались криптопро .NET версии 1.0.5913.0, крипопро CSP версий 3.6, 3.9, 4.0 (разные билды, в т.ч. последний с вашего сайта).
Проверялось на операционных системах Windows server 2008 R2, 2012 R2, Windows 10.

P.S.: для тех, кто столкнется с похожей проблемой, удалить .net framework 4.6.2 можно вот так:
Windows 10: удалить обновление KB3151900
Windows server 2012 R2: удалить обновление KB3151864
Windows server 2008 R2: удалить .NET Framework 4.6.2 из "программы и компоненты".

Отредактировано пользователем 25 января 2017 г. 14:00:46(UTC)  | Причина: Не указана

Offline Максим Коллегин  
#2 Оставлено : 31 января 2017 г. 11:01:04(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,393
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 37 раз
Поблагодарили: 717 раз в 621 постах
Спасибо, постараемся поддержать.
Попробуйте тестовую версию КриптоПро .NET:
https://www.cryptopro.ru.../prerelease/NETSetup.exe

Отредактировано пользователем 31 января 2017 г. 11:03:48(UTC)  | Причина: Не указана

Знания в базе знаний, поддержка в техподдержке
thanks 1 пользователь поблагодарил Максим Коллегин за этот пост.
FoKycHuK оставлено 31.01.2017(UTC)
Offline FoKycHuK  
#3 Оставлено : 1 февраля 2017 г. 12:01:02(UTC)
FoKycHuK

Статус: Новичок

Группы: Участники
Зарегистрирован: 13.01.2017(UTC)
Сообщений: 4

Сказал(а) «Спасибо»: 3 раз
На тестовой версии эта проблема так же присутствует.
Offline Максим Коллегин  
#4 Оставлено : 1 февраля 2017 г. 14:04:44(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,393
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 37 раз
Поблагодарили: 717 раз в 621 постах
Взяли в работу.
Знания в базе знаний, поддержка в техподдержке
thanks 1 пользователь поблагодарил Максим Коллегин за этот пост.
FoKycHuK оставлено 01.02.2017(UTC)
Offline Артём Макаров  
#5 Оставлено : 20 февраля 2017 г. 10:56:39(UTC)
Артём Макаров

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 20.02.2017(UTC)
Сообщений: 217

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 63 раз в 59 постах
Новая тестовая сборка. Должна решить проблему.
NETSetup.zip (1,397kb) загружен 5 раз(а).
Техническую поддержку оказываем тут
Наша база знаний
Offline FoKycHuK  
#6 Оставлено : 28 февраля 2017 г. 13:48:28(UTC)
FoKycHuK

Статус: Новичок

Группы: Участники
Зарегистрирован: 13.01.2017(UTC)
Сообщений: 4

Сказал(а) «Спасибо»: 3 раз
Кажется, не помогло :( Я запускаю все тот же код, что и в примере выше -- он все еще разваливается на методе GetAnyPublicKey с той же ошибкой.
Offline Максим Коллегин  
#7 Оставлено : 28 февраля 2017 г. 14:02:23(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,393
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 37 раз
Поблагодарили: 717 раз в 621 постах
Попробуйте сборку 1.0.6262.0 со страницы загрузок - я выкладывал несколько дней назад.
Знания в базе знаний, поддержка в техподдержке
Offline Артём Макаров  
#8 Оставлено : 28 февраля 2017 г. 16:00:54(UTC)
Артём Макаров

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 20.02.2017(UTC)
Сообщений: 217

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 63 раз в 59 постах
В 6262 скорее всего та же ошибка будет. Попробуйте эту.
NETSetup.zip (1,392kb) загружен 10 раз(а).

Отредактировано пользователем 6 марта 2017 г. 14:44:50(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Артём Макаров за этот пост.
FoKycHuK оставлено 07.03.2017(UTC)
Offline FoKycHuK  
#9 Оставлено : 7 марта 2017 г. 10:20:43(UTC)
FoKycHuK

Статус: Новичок

Группы: Участники
Зарегистрирован: 13.01.2017(UTC)
Сообщений: 4

Сказал(а) «Спасибо»: 3 раз
6262 не пробовал, но вот 6274 из последнего сообщения действительно решает проблему! Спасибо :)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (3)
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.