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

Уведомление

Icon
Error

36 Страницы«<1920212223>»
Опции
К последнему сообщению К первому непрочитанному
Offline Артём Макаров  
#201 Оставлено : 23 января 2022 г. 20:02:43(UTC)
Артём Макаров

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 62 раз в 58 постах
Автор: ZiCold Перейти к цитате
Добрый день! Возникла ошибка при попытке запустить приложение WebApi с CoreFx на сервере.

Код:
 System.MissingMethodException: Method not found: 'System.Security.Cryptography.HashAlgorithmName System.Security.Cryptography.HashAlgorithmName.get_Gost3411_2012_256()'.\r\n 
  at Internal.Cryptography.PkcsHelpers.GetDigestAlgorithm(String oidValue, Boolean forVerification)\r\n   at System.Security.Cryptography.Pkcs.SignerInfo.GetDigestAlgorithm() in C:\\projects\\corefx\\src\\System.Security.Cryptography.Pkcs\\src\\System\\Security\\Cryptography\\Pkcs\\SignerInfo.cs:line 737\r\n  
 at System.Security.Cryptography.Pkcs.SignerInfo.PrepareDigest(Boolean compatMode) in C:\\projects\\corefx\\src\\System.Security.Cryptography.Pkcs\\src\\System\\Security\\Cryptography\\Pkcs\\SignerInfo.cs:line 510\r\n 
  at System.Security.Cryptography.Pkcs.SignerInfo.VerifySignature(CmsSignature signatureProcessor, X509Certificate2 certificate, Boolean compatMode) in C:\\projects\\corefx\\src\\System.Security.Cryptography.Pkcs\\src\\System\\Security\\Cryptography\\Pkcs\\SignerInfo.cs:line 698\r\n  
 at System.Security.Cryptography.Pkcs.SignerInfo.Verify(X509Certificate2Collection extraStore, X509Certificate2 certificate, Boolean verifySignatureOnly) in C:\\projects\\corefx\\src\\System.Security.Cryptography.Pkcs\\src\\System\\Security\\Cryptography\\Pkcs\\SignerInfo.cs:line 647\r\n
  at System.Security.Cryptography.Pkcs.SignerInfo.CheckSignature(X509Certificate2Collection extraStore, Boolean verifySignatureOnly) in C:\\projects\\corefx\\src\\System.Security.Cryptography.Pkcs\\src\\System\\Security\\Cryptography\\Pkcs\\SignerInfo.cs:line 415\r\n 
  at System.Security.Cryptography.Pkcs.SignedCms.CheckSignatures(SignerInfoCollection signers, X509Certificate2Collection extraStore, Boolean verifySignatureOnly) in C:\\projects\\corefx\\src\\System.Security.Cryptography.Pkcs\\src\\System\\Security\\Cryptography\\Pkcs\\SignedCms.cs:line 595\r\n 
  at System.Security.Cryptography.Pkcs.SignedCms.CheckSignature(X509Certificate2Collection extraStore, Boolean verifySignatureOnly) in C:\\projects\\corefx\\src\\System.Security.Cryptography.Pkcs\\src\\System\\Security\\Cryptography\\Pkcs\\SignedCms.cs:line 578\r\n  
 at System.Security.Cryptography.Pkcs.SignedCms.CheckSignature(Boolean verifySignatureOnly) in C:\\projects\\corefx\\src\\System.Security.Cryptography.Pkcs\\src\\System\\Security\\Cryptography\\Pkcs\\SignedCms.cs:line 569\r\n  


Сам проект WebApi собирал согласно инструкции CoreFX инструкции. Всё на локальное машине работает.
На сервере устанавливал SDK и Hosting пакеты - не помогло. Даже полностью вычищал все установленные версии Net Core.
Что еще можно сделать?


Добрый день.

Каким образом и на какой операционной системе происходит попытка запуска приложения на сервере?
IIS + Windows увы пока не поддерживаем, ибо рантайм для IIS не в курсе нашего изменённого рантайма.

upd: что то похожее было тут в начале https://github.com/CryptoPro/corefx/issues/29.
Ещё раз проверить, что установлены именно требуемые версии рантаймов и что используется модифицированная сборка pcks.

Отредактировано пользователем 23 января 2022 г. 21:44:13(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
Offline Aries  
#202 Оставлено : 25 января 2022 г. 10:31:20(UTC)
Aries

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

Группы: Участники
Зарегистрирован: 20.12.2018(UTC)
Сообщений: 7
Российская Федерация
Откуда: Москва

Добрый день!
В очередной раз возвращаюсь к анализу возможности перехода c .net framework и как я вижу по этой ветке, процедура все ещё далека от идеала =)
Отсюда два вопроса:
1. Текущие примеры до сих пор идут на .net core 3. А что по поводу .net 5 и .net 6? Мы сейчас переводим проект уже на .net 6. Поддерживается ли он?
2. Есть ли возможность и планируется ли использование более тривиальных вариантов в дальнейшем (вроде nuget пакетов и т.д.) вместо замены corefx?
Offline Санчир Момолдаев  
#203 Оставлено : 7 февраля 2022 г. 19:42:48(UTC)
Санчир Момолдаев

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

Группы: Модератор, Участники
Зарегистрирован: 03.12.2018(UTC)
Сообщений: 1,182
Российская Федерация

Сказал(а) «Спасибо»: 99 раз
Поблагодарили: 271 раз в 252 постах
Автор: Aries Перейти к цитате
Добрый день!
В очередной раз возвращаюсь к анализу возможности перехода c .net framework и как я вижу по этой ветке, процедура все ещё далека от идеала =)
Отсюда два вопроса:
1. Текущие примеры до сих пор идут на .net core 3. А что по поводу .net 5 и .net 6? Мы сейчас переводим проект уже на .net 6. Поддерживается ли он?
2. Есть ли возможность и планируется ли использование более тривиальных вариантов в дальнейшем (вроде nuget пакетов и т.д.) вместо замены corefx?


Добрый день!
1. сейчас 3.1. разработка под 6.0 уже начата. 5.0 не будет
2. тут скорее организационно-юридический вопрос. разработка СКЗИ регулируется ФСБ. в некоторых случаях в Net (например подпись по хэшу или шифрование) придется проводить определенные исследования. сможет ли конечная ИС получить заключение ФСБ большой вопрос.
Техническую поддержку оказываем тут
Наша база знаний
Offline emejibka  
#204 Оставлено : 9 февраля 2022 г. 14:44:22(UTC)
emejibka

Статус: Участник

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

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

Портируем код наших приложений на .net core, решили начать с функционала для работы с ФСС. Успешно реализовали подписание и шифрование сообщений. Но дешифровать не получается, вернее один и тот же код работает на windows и не работает на linux. Код функции
Код:

var xmlDoc = new XmlDocument { PreserveWhitespace = true };
xmlDoc.LoadXml(xml.ToString());
var exml = new EncryptedXml(xmlDoc);
exml.DecryptDocument();
return xmlDoc.OuterXml;


На linux получаем исключение
Цитата:

System.Security.Cryptography.CryptographicException: Error occurred during a cryptographic operation.
at Internal.NativeCrypto.CapiHelper.ImportKeyBlob(Byte[] keyBlob, SafeProvHandle hProv, CspProviderFlags flags, SafeKeyHandle hImportKey, SafeKeyHandle& hKey)
at Internal.NativeCrypto.CapiHelper.ImportSessionWrappedKey(SafeProvHandle hCSP, CspProviderFlags flags, GostWrappedKeyObject cspObject, SafeKeyHandle hImportKey, SafeKeyHandle& hKey)
at System.Security.Cryptography.GostSharedSecretCryptoServiceProvider.CryptoProUnwrap(Byte[] wrapped, Int32 calgProExport)
at System.Security.Cryptography.GostSharedSecretCryptoServiceProvider.CryptoProUnwrap(Byte[] wrapped)
at System.Security.Cryptography.GostSharedSecretCryptoServiceProvider.Unwrap(Byte[] wrapped, GostKeyWrapMethod method)
at System.Security.Cryptography.GostKeyExchangeDeformatter.DecryptKeyExchange(GostKeyTransport transport, GostKeyWrapMethod keyWrapMethod)
at System.Security.Cryptography.GostKeyExchangeDeformatter.DecryptKeyExchangeData(Byte[] data)
at System.Security.Cryptography.Xml.EncryptedXml.DecryptKey(Byte[] keyData, Gost3410_2012_256 gost, String symmetricAlgorithmUri)
at System.Security.Cryptography.Xml.EncryptedXml.DecryptEncryptedKey(EncryptedKey encryptedKey, String symmetricAlgorithmUri)
at System.Security.Cryptography.Xml.EncryptedXml.GetDecryptionKey(EncryptedData encryptedData, String symmetricAlgorithmUri)
at System.Security.Cryptography.Xml.EncryptedXml.DecryptDocument()


Насколько я понял, не все высокоуровневые функции реализованы напрямую и необходимо дешифровать xml с помощью добавленных в форк .net классов, а не используя EncryptedXml.

Подскажите, пожалуйста, где найти примеры работы с дешифрованием xml по гостовым алгоритмам, работающие на linux.
Offline Артём Макаров  
#205 Оставлено : 9 февраля 2022 г. 15:01:16(UTC)
Артём Макаров

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 62 раз в 58 постах
Автор: emejibka Перейти к цитате
Здравствуйте.

Портируем код наших приложений на .net core, решили начать с функционала для работы с ФСС. Успешно реализовали подписание и шифрование сообщений. Но дешифровать не получается, вернее один и тот же код работает на windows и не работает на linux. Код функции
Код:

var xmlDoc = new XmlDocument { PreserveWhitespace = true };
xmlDoc.LoadXml(xml.ToString());
var exml = new EncryptedXml(xmlDoc);
exml.DecryptDocument();
return xmlDoc.OuterXml;


На linux получаем исключение
Цитата:

System.Security.Cryptography.CryptographicException: Error occurred during a cryptographic operation.
at Internal.NativeCrypto.CapiHelper.ImportKeyBlob(Byte[] keyBlob, SafeProvHandle hProv, CspProviderFlags flags, SafeKeyHandle hImportKey, SafeKeyHandle& hKey)
at Internal.NativeCrypto.CapiHelper.ImportSessionWrappedKey(SafeProvHandle hCSP, CspProviderFlags flags, GostWrappedKeyObject cspObject, SafeKeyHandle hImportKey, SafeKeyHandle& hKey)
at System.Security.Cryptography.GostSharedSecretCryptoServiceProvider.CryptoProUnwrap(Byte[] wrapped, Int32 calgProExport)
at System.Security.Cryptography.GostSharedSecretCryptoServiceProvider.CryptoProUnwrap(Byte[] wrapped)
at System.Security.Cryptography.GostSharedSecretCryptoServiceProvider.Unwrap(Byte[] wrapped, GostKeyWrapMethod method)
at System.Security.Cryptography.GostKeyExchangeDeformatter.DecryptKeyExchange(GostKeyTransport transport, GostKeyWrapMethod keyWrapMethod)
at System.Security.Cryptography.GostKeyExchangeDeformatter.DecryptKeyExchangeData(Byte[] data)
at System.Security.Cryptography.Xml.EncryptedXml.DecryptKey(Byte[] keyData, Gost3410_2012_256 gost, String symmetricAlgorithmUri)
at System.Security.Cryptography.Xml.EncryptedXml.DecryptEncryptedKey(EncryptedKey encryptedKey, String symmetricAlgorithmUri)
at System.Security.Cryptography.Xml.EncryptedXml.GetDecryptionKey(EncryptedData encryptedData, String symmetricAlgorithmUri)
at System.Security.Cryptography.Xml.EncryptedXml.DecryptDocument()


Насколько я понял, не все высокоуровневые функции реализованы напрямую и необходимо дешифровать xml с помощью добавленных в форк .net классов, а не используя EncryptedXml.

Подскажите, пожалуйста, где найти примеры работы с дешифрованием xml по гостовым алгоритмам, работающие на linux.


Реализации в core можно посмотреть тут (наши внутренние тесты) - https://github.com/Crypt.../GostEncryptedXmlTest.cs
Техническую поддержку оказываем тут
Наша база знаний
Offline emejibka  
#206 Оставлено : 10 февраля 2022 г. 12:54:27(UTC)
emejibka

Статус: Участник

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

Сказал(а) «Спасибо»: 2 раз
Посмотрел примеры, все они в конечном итоге всё равно вызывают System.Security.Cryptography.GostKeyExchangeDeformatter.DecryptKeyExchange, что приводит к ошибке.
Есть ли какой-нибудь другой способ создать экземпляр Gost28147CryptoServiceProvider с нужными параметрами (как я понимаю ему необходимы приватный ключ и IV)?

Offline Артём Макаров  
#207 Оставлено : 10 февраля 2022 г. 13:02:17(UTC)
Артём Макаров

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 62 раз в 58 постах
Автор: emejibka Перейти к цитате
Посмотрел примеры, все они в конечном итоге всё равно вызывают System.Security.Cryptography.GostKeyExchangeDeformatter.DecryptKeyExchange, что приводит к ошибке.
Есть ли какой-нибудь другой способ создать экземпляр Gost28147CryptoServiceProvider с нужными параметрами (как я понимаю ему необходимы приватный ключ и IV)?


В примере указан корректный способ работы с EncryptedXml. Если ошибка у вас воспроизводится и на нём - сделайте небольшой пример проекта с шифрованием и расшифрованием на основе примера из тестов с вашим сертификатом и приложите во вложении (сертификат в pfx и пароль к нему тоже нужно будет приложить) - попробуем посмотреть.
Техническую поддержку оказываем тут
Наша база знаний
Offline emejibka  
#208 Оставлено : 11 февраля 2022 г. 13:48:24(UTC)
emejibka

Статус: Участник

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

Сказал(а) «Спасибо»: 2 раз
Собрал пример, скачать можно тут
https://disk.yandex.ru/d/xfaPcLXBlWAPjA

В примере уже лежит тестовый сертификат в папке \linux-amd64_deb\test-cert.pfx, им подписывается и шифруется запрос в ФСС.
В windows всё работает без ошибок, подписание, шифрование и дешифрование. В linux на этапе дешифрования получаем ошибку
Цитата:

Unhandled exception. System.Security.Cryptography.CryptographicException: Error occurred during a cryptographic operation.
at Internal.NativeCrypto.CapiHelper.ImportKeyBlob(Byte[] keyBlob, SafeProvHandle hProv, CspProviderFlags flags, SafeKeyHandle hImportKey, SafeKeyHandle& hKey)
at Internal.NativeCrypto.CapiHelper.ImportSessionWrappedKey(SafeProvHandle hCSP, CspProviderFlags flags, GostWrappedKeyObject cspObject, SafeKeyHandle hImportKey, SafeKeyHandle& hKey)
at System.Security.Cryptography.GostSharedSecretCryptoServiceProvider.CryptoProUnwrap(Byte[] wrapped, Int32 calgProExport)
at System.Security.Cryptography.GostSharedSecretCryptoServiceProvider.CryptoProUnwrap(Byte[] wrapped)
at System.Security.Cryptography.GostSharedSecretCryptoServiceProvider.Unwrap(Byte[] wrapped, GostKeyWrapMethod method)
at System.Security.Cryptography.GostKeyExchangeDeformatter.DecryptKeyExchange(GostKeyTransport transport, GostKeyWrapMethod keyWrapMethod)
at System.Security.Cryptography.GostKeyExchangeDeformatter.DecryptKeyExchangeData(Byte[] data)
at System.Security.Cryptography.Xml.EncryptedXml.DecryptKey(Byte[] keyData, Gost3410_2012_256 gost, String symmetricAlgorithmUri) in /home/appveyor/projects/corefx/src/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/EncryptedXml.cs:line 1523
at System.Security.Cryptography.Xml.EncryptedXml.DecryptEncryptedKey(EncryptedKey encryptedKey, String symmetricAlgorithmUri) in /home/appveyor/projects/corefx/src/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/EncryptedXml.cs:line 644
at System.Security.Cryptography.Xml.EncryptedXml.GetDecryptionKey(EncryptedData encryptedData, String symmetricAlgorithmUri) in /home/appveyor/projects/corefx/src/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/EncryptedXml.cs:line 396
at System.Security.Cryptography.Xml.EncryptedXml.DecryptDocument() in /home/appveyor/projects/corefx/src/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/EncryptedXml.cs:line 927
at SampleProject.FssClientMessageSigner.Decrypt(String xml, String clinicCertificateThumbprint) in /build/src/SampleProject/FssClientMessageSigner.cs:line 157
at SampleProject.FssClient.GetNextSickListNumbers(String clinicCertificateThumbprint, String ogrn, Int32 numbersCount) in /build/src/SampleProject/FssClient.cs:line 61
at SampleProject.Program.Main(String[] args) in /build/src/SampleProject/Program.cs:line 32
at SampleProject.Program.<Main>(String[] args)


Команда для сборки и запуска контейнера в docker
Цитата:
docker build -t crypto-api-test .;docker run -it --rm crypto-api-test


Для отправки запросов через http пришлось сделать прокси к https://eln-test.fss.ru, потому что при работе с https возникает ошибка (несколько страниц назад писали о ней).

Отредактировано пользователем 11 февраля 2022 г. 13:49:59(UTC)  | Причина: Не указана

Offline Артём Макаров  
#209 Оставлено : 14 февраля 2022 г. 11:07:30(UTC)
Артём Макаров

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 62 раз в 58 постах
Автор: emejibka Перейти к цитате
Собрал пример, скачать можно тут
https://disk.yandex.ru/d/xfaPcLXBlWAPjA

В примере уже лежит тестовый сертификат в папке \linux-amd64_deb\test-cert.pfx, им подписывается и шифруется запрос в ФСС.
В windows всё работает без ошибок, подписание, шифрование и дешифрование. В linux на этапе дешифрования получаем ошибку
Цитата:

Unhandled exception. System.Security.Cryptography.CryptographicException: Error occurred during a cryptographic operation.
at Internal.NativeCrypto.CapiHelper.ImportKeyBlob(Byte[] keyBlob, SafeProvHandle hProv, CspProviderFlags flags, SafeKeyHandle hImportKey, SafeKeyHandle& hKey)
at Internal.NativeCrypto.CapiHelper.ImportSessionWrappedKey(SafeProvHandle hCSP, CspProviderFlags flags, GostWrappedKeyObject cspObject, SafeKeyHandle hImportKey, SafeKeyHandle& hKey)
at System.Security.Cryptography.GostSharedSecretCryptoServiceProvider.CryptoProUnwrap(Byte[] wrapped, Int32 calgProExport)
at System.Security.Cryptography.GostSharedSecretCryptoServiceProvider.CryptoProUnwrap(Byte[] wrapped)
at System.Security.Cryptography.GostSharedSecretCryptoServiceProvider.Unwrap(Byte[] wrapped, GostKeyWrapMethod method)
at System.Security.Cryptography.GostKeyExchangeDeformatter.DecryptKeyExchange(GostKeyTransport transport, GostKeyWrapMethod keyWrapMethod)
at System.Security.Cryptography.GostKeyExchangeDeformatter.DecryptKeyExchangeData(Byte[] data)
at System.Security.Cryptography.Xml.EncryptedXml.DecryptKey(Byte[] keyData, Gost3410_2012_256 gost, String symmetricAlgorithmUri) in /home/appveyor/projects/corefx/src/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/EncryptedXml.cs:line 1523
at System.Security.Cryptography.Xml.EncryptedXml.DecryptEncryptedKey(EncryptedKey encryptedKey, String symmetricAlgorithmUri) in /home/appveyor/projects/corefx/src/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/EncryptedXml.cs:line 644
at System.Security.Cryptography.Xml.EncryptedXml.GetDecryptionKey(EncryptedData encryptedData, String symmetricAlgorithmUri) in /home/appveyor/projects/corefx/src/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/EncryptedXml.cs:line 396
at System.Security.Cryptography.Xml.EncryptedXml.DecryptDocument() in /home/appveyor/projects/corefx/src/System.Security.Cryptography.Xml/src/System/Security/Cryptography/Xml/EncryptedXml.cs:line 927
at SampleProject.FssClientMessageSigner.Decrypt(String xml, String clinicCertificateThumbprint) in /build/src/SampleProject/FssClientMessageSigner.cs:line 157
at SampleProject.FssClient.GetNextSickListNumbers(String clinicCertificateThumbprint, String ogrn, Int32 numbersCount) in /build/src/SampleProject/FssClient.cs:line 61
at SampleProject.Program.Main(String[] args) in /build/src/SampleProject/Program.cs:line 32
at SampleProject.Program.<Main>(String[] args)


Команда для сборки и запуска контейнера в docker
Цитата:
docker build -t crypto-api-test .;docker run -it --rm crypto-api-test


Для отправки запросов через http пришлось сделать прокси к https://eln-test.fss.ru, потому что при работе с https возникает ошибка (несколько страниц назад писали о ней).


Ошибку на вашем проекте воспроизвели, в последней ночной сборке должно быть исправлено. Технические подробности проблемы тут - https://github.com/CryptoPro/corefx/issues/53

Текущая сборка с исправлениями:
win - https://ci.appveyor.com/...ex2ptc0b0v5hup/artifacts
unix - https://ci.appveyor.com/...y9vbs4uqdi3o8x/artifacts

можно пробовать.
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Артём Макаров за этот пост.
emejibka оставлено 15.02.2022(UTC)
Offline emejibka  
#210 Оставлено : 15 февраля 2022 г. 9:26:15(UTC)
emejibka

Статус: Участник

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

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