Я пытаюсь использовать класс HttpListener в приложении С#, чтобы мини-веб-сервер обслуживал контент через SSL. Для этого мне нужно использовать инструмент httpcfg. У меня есть файл .pfx с моей парой открытого и закрытого ключей. Если я импортирую эту пару ключей вручную, используя mmc в локальный магазин, все будет хорошо. Однако, если я импортирую эту пару ключей программно, используя класс X509Store, я не могу подключиться к моему мини-серверу. Обратите внимание, что в обоих методах сертификат импортируется в МОЙ магазин в LocalMachine. Как ни странно, я могу просмотреть сертификат в mmc, как только я его программно импортирую, и когда я его просмотрю, пользовательский интерфейс указывает, что для этого сертификата также доступен закрытый ключ.
Копая немного глубже, я замечаю, что когда я вручную импортирую пару ключей, я вижу, что новый файл появляется в C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys
, но не появляется, когда я импортирую программно. В связанной заметке, когда я удаляю вручную импортированный сертификат, он не удаляет соответствующий файл закрытого ключа из ранее упомянутого каталога.
В конечном счете, мой вопрос заключается в следующем: когда я программно добавляю сертификат в хранилище, где хранится закрытый ключ и почему он не доступен для класса HttpListener (HttpApi)?
Обратите внимание, что этот вопрос немного связан, но я не думаю, что это проблема, поскольку все это делается как один и тот же пользователь Windows: Как установить разрешение чтения в файле закрытого ключа сертификата X.509 из .NET