Статус: Сотрудник
Группы: Участники
Зарегистрирован: 20.02.2017(UTC) Сообщений: 217
Сказал(а) «Спасибо»: 4 раз Поблагодарили: 63 раз в 59 постах
|
Автор: 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)
| Причина: Не указана |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 20.12.2018(UTC) Сообщений: 7 Откуда: Москва
|
Добрый день! В очередной раз возвращаюсь к анализу возможности перехода c .net framework и как я вижу по этой ветке, процедура все ещё далека от идеала =) Отсюда два вопроса: 1. Текущие примеры до сих пор идут на .net core 3. А что по поводу .net 5 и .net 6? Мы сейчас переводим проект уже на .net 6. Поддерживается ли он? 2. Есть ли возможность и планируется ли использование более тривиальных вариантов в дальнейшем (вроде nuget пакетов и т.д.) вместо замены corefx?
|
|
|
|
Статус: Сотрудник
Группы: Модератор, Участники Зарегистрирован: 03.12.2018(UTC) Сообщений: 1,192 Сказал(а) «Спасибо»: 100 раз Поблагодарили: 272 раз в 253 постах
|
Автор: 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 (например подпись по хэшу или шифрование) придется проводить определенные исследования. сможет ли конечная ИС получить заключение ФСБ большой вопрос. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 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.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 20.02.2017(UTC) Сообщений: 217
Сказал(а) «Спасибо»: 4 раз Поблагодарили: 63 раз в 59 постах
|
Автор: 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 |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 05.09.2017(UTC) Сообщений: 14
Сказал(а) «Спасибо»: 2 раз
|
Посмотрел примеры, все они в конечном итоге всё равно вызывают System.Security.Cryptography.GostKeyExchangeDeformatter.DecryptKeyExchange, что приводит к ошибке. Есть ли какой-нибудь другой способ создать экземпляр Gost28147CryptoServiceProvider с нужными параметрами (как я понимаю ему необходимы приватный ключ и IV)?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 20.02.2017(UTC) Сообщений: 217
Сказал(а) «Спасибо»: 4 раз Поблагодарили: 63 раз в 59 постах
|
Автор: emejibka Посмотрел примеры, все они в конечном итоге всё равно вызывают System.Security.Cryptography.GostKeyExchangeDeformatter.DecryptKeyExchange, что приводит к ошибке. Есть ли какой-нибудь другой способ создать экземпляр Gost28147CryptoServiceProvider с нужными параметрами (как я понимаю ему необходимы приватный ключ и IV)?
В примере указан корректный способ работы с EncryptedXml. Если ошибка у вас воспроизводится и на нём - сделайте небольшой пример проекта с шифрованием и расшифрованием на основе примера из тестов с вашим сертификатом и приложите во вложении (сертификат в pfx и пароль к нему тоже нужно будет приложить) - попробуем посмотреть. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 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)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 20.02.2017(UTC) Сообщений: 217
Сказал(а) «Спасибо»: 4 раз Поблагодарили: 63 раз в 59 постах
|
Автор: 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/artifactsunix - https://ci.appveyor.com/...y9vbs4uqdi3o8x/artifactsможно пробовать. |
|
1 пользователь поблагодарил Артём Макаров за этот пост.
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 05.09.2017(UTC) Сообщений: 14
Сказал(а) «Спасибо»: 2 раз
|
Спасибо, дешифрование ответа прошло без ошибок.
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close