|
Алгоритм ключа сертификата не поддерживается
|
|||
---|---|---|---|
#18+
Добрый день. Не подскажите, почему при попытке соедениться по Https с сервером у меня вываливается ошибка на строке: Stream request = request.GetRequestStream(); Ошибка следующая: Базовое соединение закрыто: Непредвиденная ошибка при приеме. Алгоритм ключа сертификата не поддерживается. Стек: в System.Security.Cryptography.X509Certificates.PublicKey.get_Key()\r\n в System.Security.Cryptography.X509Certificates.X509Certificate2.ToString(Boolean verbose)\r\n в System.Net.Security.SecureChannel.AcquireClientCredentials(Byte[]& thumbPrint)\r\n в System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output)\r\n в System.Net.Security.SecureChannel.NextMessage(Byte[] incoming, Int32 offset, Int32 count)\r\n в System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)\r\n в System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest)\r\n в System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult)\r\n в System.Net.TlsStream.CallProcessAuthentication(Object state)\r\n в System.Threading.ExecutionContext.runTryCode(Object userData)\r\n в System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)\r\n в System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)\r\n в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)\r\n в System.Net.TlsStream.ProcessAuthentication(LazyAsyncResult result)\r\n в System.Net.TlsStream.Write(Byte[] buffer, Int32 offset, Int32 size)\r\n в System.Net.PooledStream.Write(Byte[] buffer, Int32 offset, Int32 size)\r\n в System.Net.ConnectStream.WriteHeaders(Boolean async)" Проблема в том, что я использую сертификат, который использует ключи ГОСТ 2001, то есть сгенерированный УЦ отечественного криптопровайдера. Если посмотреть класс сертификата, то там в поле PrivateKey и PublicLey.Key указано "Алгоритм ключа сертификата не поддерживается". Как можно добавить эту поддержку или обойти её. Можно ли вообще в .NET работать с нашими сертификатами? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2010, 18:11 |
|
Алгоритм ключа сертификата не поддерживается
|
|||
---|---|---|---|
#18+
Вообще ни у кого нет никаких мыслей по этому поводу? Выдается обычное исключение CryptographicException: Описание MSDN - значение ключа не является значением RSA или DSA, или ключ не читается Может мне свой класс написать, добавляющий поддержку ключей по ГОСТ, может ктонить в курсе, как это сделать, а то получается что можно работать только с RSA и DSA. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2010, 11:15 |
|
Алгоритм ключа сертификата не поддерживается
|
|||
---|---|---|---|
#18+
потребовать (или купить) у "отечественного криптопровайдера" соответствующий sdk? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2010, 13:41 |
|
Алгоритм ключа сертификата не поддерживается
|
|||
---|---|---|---|
#18+
Да, действительно, shaprei sdk от КриптоПро помог, однако это лицензионный продукт. Судя по всему зтандартными способами этот вопрос не решить, потому что .NET всегда будет выводить Exception если алгоритм ключа не поддерживатся. Возник другой вопрос: Какими способами можно осужествить связь по https с сервером, если делать это в обход .NET? То есть если формирование запроса с заголовками происходит в моей библиотеке, как другим способом можно его отправить по https? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.07.2010, 16:02 |
|
Алгоритм ключа сертификата не поддерживается
|
|||
---|---|---|---|
#18+
DageNeZnauKakoyLogin, Добавлю, что если будешь использовать SDK, то для промышленной эксплуатации чтоб все было по ГОСТу, необходим акт встаивания. А про https, все таки не ясно, Вы какие сертификаты будете использовать??? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2010, 04:49 |
|
Алгоритм ключа сертификата не поддерживается
|
|||
---|---|---|---|
#18+
Victor TarasovDageNeZnauKakoyLogin, Добавлю, что если будешь использовать SDK, то для промышленной эксплуатации чтоб все было по ГОСТу, необходим акт встаивания. А про https, все таки не ясно, Вы какие сертификаты будете использовать??? Я буду использовать сертификаты, выданные УЦ отечественного криптопровайдера инфотекс => привязанные к ключу, шифрующему по ГОСТ 34.10 (вроде так :) => при попытке зайти на сайт по https вываливается Exception (: Не удалось создать защищенный канал SSL/TLS). Если просомтреть класс сертификата, то там в поле PrivateKey написано threw NotSupportedException. Поэтому собственно ошибка и вылетает. Так вот я хочу понятьЯ, можно ли как нибуть организовать защищенный канал, не прибегая к сторонним платным SDK? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2010, 11:58 |
|
Алгоритм ключа сертификата не поддерживается
|
|||
---|---|---|---|
#18+
DageNeZnauKakoyLogin Я буду использовать сертификаты, выданные УЦ отечественного криптопровайдера инфотекс => привязанные к ключу, шифрующему по ГОСТ 34.10 (вроде так :) => при попытке зайти на сайт по https вываливается Exception (: Не удалось создать защищенный канал SSL/TLS). Если просомтреть класс сертификата, то там в поле PrivateKey написано threw NotSupportedException. Поэтому собственно ошибка и вылетает. Так вот я хочу понятьЯ, можно ли как нибуть организовать защищенный канал, не прибегая к сторонним платным SDK? Если Вы хотите чтобы было у Вас все юрилически правильно, то необходимо приобрести SDK и еще отдать куда то там вашу поделку, чтобы получить акт встраивания(что вы в свой софт тож закладок не запихали). Вот так все печально. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2010, 12:01 |
|
Алгоритм ключа сертификата не поддерживается
|
|||
---|---|---|---|
#18+
Про юридическую сторону понятно, однако хотелось бы знать с технической точки зрения, могу ли я грубо говоря послать запрос через .NET на сайт по https с использованием сертификата к примеру КриптоПро без использования сторонних SDK, так как утилита - простой exe-шник 100 кб, а sdk - отдельный инсталлятор весом в 10 мб. Или вообще никак? Через браузер ведь страница замечательно открывается. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2010, 15:43 |
|
Алгоритм ключа сертификата не поддерживается
|
|||
---|---|---|---|
#18+
DageNeZnauKakoyLogin, Без сторонего SDK можно, если Вы сами напишете свой провайдер который булет реализовывать ГОСТовый алгоритм шифрования. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2010, 06:48 |
|
Алгоритм ключа сертификата не поддерживается
|
|||
---|---|---|---|
#18+
DageNeZnauKakoyLoginЧерез браузер ведь страница замечательно открывается. Вот вот, открывается. Люди добрые подскажите, наверняка можно это как нить реализовать ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2011, 16:27 |
|
Алгоритм ключа сертификата не поддерживается
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36.
У меня еще происходит экспорт сертификата, и создание его Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2011, 16:31 |
|
Алгоритм ключа сертификата не поддерживается
|
|||
---|---|---|---|
#18+
единственное что я понял, так это разница между сообщениями 10 месяцев. какой вопрос то? и что за код? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2011, 16:53 |
|
Алгоритм ключа сертификата не поддерживается
|
|||
---|---|---|---|
#18+
nkzи что за код? Это метод который должен пройти авторизацию на сайте при помощи сертификата nkzкакой вопрос то? Нужно пройти авторизацию на сайте. Сайт использует клиентские сертификаты. Сертификаты шифрованы КриптоПРО У меня на машине стоит криптоПро, в IE открываю страницу с авторизацией, мне вылетает окошко с выбором сертификата. Указываю, все работает нормально! Вопрос как реализовать вход на сайт при помощи C# ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2011, 17:01 |
|
Алгоритм ключа сертификата не поддерживается
|
|||
---|---|---|---|
#18+
serega063nkzи что за код? Это метод который должен пройти авторизацию на сайте при помощи сертификата сначала даже не обратил внимания. попробуйте использовать X509Certificate2. по крайней мере, в примерах криптопро именно он фигурирует. экспорт, соответственно, будет не нужен. а так в целом все похоже на правду. можно еще более заморочиться и использовать апи - CryptAcquireContext(ref pProv, Cnf.ContName, "", 75, 0) - CryptGetUserKey(pProv, WinCryptH.AT_KEYEXCHANGE, ref pUserKey) - CryptGetKeyParam(pUserKey, WinCryptH.KP_CERTIFICATE, pCert, ref dt_len, 0) и далее new X509Certificate(pCert, dt_len) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2011, 14:12 |
|
|
start [/forum/topic.php?fid=19&fpage=22&tid=1397476]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
169ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 243ms |
total: | 506ms |
0 / 0 |