Чтение закрытого ключа из PFX-файла

Я знаю, есть много сообщений об этом, но я все еще не могу найти решение, чтобы заставить это работать.Я сгенерировал PFX- файл с openssl на моей машине следующим образом:В моем приложении C # я получаю доступ к закрытому ключу следующим образом:Это прекрасно работает (на моей машине), но когда я запускаю тот же код на другой машине, он выдает: «Набор ключей не найден» , хотя ---- +: = 2 =: + ---- возвращает ---- +: = 3 =: + ---- !Разве закрытый ключ не должен быть включен в * .pfx-файл?Ты можешь рассказать мне:Был ли сертификат /закрытый ключ каким-то образом автоматически установлен на моей машине openssl при его создании?Как я могу прочитать закрытый ключ из * .PFX-файла (или, альтернативно, из * .PEM-файла)?StackTrace of Exception:Обновить:Я узнал, что работает следующее:Однако для меня это всего лишь обходной путь, я бы хотел сделать его более стандартным /стандартным способом!
4 голоса | спросил marsze 25 12013vEurope/Moscow11bEurope/MoscowMon, 25 Nov 2013 20:30:07 +0400 2013, 20:30:07

5 ответов


0
Кажется, в .NET нет простого способа сделать это.Поэтому я решил загрузить сертификат прямо из хранилища сертификатов:Для этого, конечно, если должен быть установлен на машине.Я думаю, что это хорошее решение этой проблемы, потому что оно добавляет дополнительный уровень безопасности (приложение должно быть запущено на компьютере, на котором установлен сертификат, и как пользователь, который его установил, также сам файл можетхраниться в безопасном месте где-нибудь еще).
ответил marsze 28 42013vEurope/Moscow11bEurope/MoscowThu, 28 Nov 2013 18:55:53 +0400 2013, 18:55:53
0
Возможно, вы можете рассказать нам немного больше о том, почему вы хотите это сделать.Конечно, есть веские причины для этого, например, написание программы, которая будет размещаться на внутреннем сервере вашей компании для автоматизации сборок продукта.Но если вы намерены распространять это приложение за пределами зоны высокого доверия (например, для клиентов), то ответ НЕ ДЕЛАЙТЕ ЭТОГО!Вы никогда не должны выдавать свой файл закрытого ключа.Это открывает его для атаки вашего пароля методом грубой силы (что, безусловно, намного слабее, чем сам закрытый ключ).А если вы распространяете свое приложение, то ваш пароль включается в виде простого текста в коде MSIL.Там его можно легко просмотреть с помощью любого дизассемблера управляемого кода (например, Reflector), и, вероятно, его можно даже просмотреть с помощью текстового или шестнадцатеричного редактора.Таким образом, распространение вашего файла закрытого ключа вместе с вашим приложением позволяет кому-то легко подписать все, что они хотят, с ВАШИМ сертификатом.Весь смысл закрытого ключа заключается в том, чтобы хранить его надежно запертым в месте, где никто не сможет получить к нему доступ, кроме вас (или вашей организации и т. Д.).
ответил drwatsoncode 17 MarpmMon, 17 Mar 2014 18:18:44 +04002014-03-17T18:18:44+04:0006 2014, 18:18:44
0
Вы должны загрузить сертификат следующим образом:Этот пост объясняет, почему http://paulstovell.com/blog/x509certificate2
ответил Bogdan 6 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 06 Sep 2016 22:17:31 +0300 2016, 22:17:31
0
Набор ключей по умолчанию не существует на другом компьютере (набор ключей пользователя обычно используется по умолчанию), вероятно, потому что это приложение asp.net (то есть у него нет профиля пользователя).Если вы передаете ---- +: = 0 =: + ---- в качестве третьего аргумента конструктору ---- +: = 1 =: + ---- , он должен работать аналогичнообе машины.Причина, по которой это происходит только при доступе к свойству ---- +: = 2 =: + ----, заключается в том, что это первое место, где создается настоящий объект CSP для использования ключа.
ответил Pent Ploompuu 25 12013vEurope/Moscow11bEurope/MoscowMon, 25 Nov 2013 20:47:01 +0400 2013, 20:47:01
0
Вы также можете получить личное через метод ниже.Из переменной сертификата вы также можете получить другую информацию, такую ​​как открытый ключ и т. Д.
ответил Ashwin Saravanan 17 Mayam18 2018, 10:35:28

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132