Самозаверяющий сертификат в Windows без makecert?
-
06-07-2019 - |
Вопрос
У нас есть серверное приложение Windows типа термоусадочной пленки, в котором нам нужно создать самозаверяющий сертификат на сервере, который будет использоваться некоторыми веб-службами WCF.Из наших поисковых запросов в Интернете выяснилось, что утилита makecert в PlatformSDK от Microsoft не может распространяться вместе с нашим приложением, поэтому мы ищем альтернативы.
Кто-нибудь знает, как использовать OpenSSL для создания сертификата и получения его в хранилище сертификатов Windows LocalMachine?Или, в качестве альтернативы, это просто вставить сертификат в хранилище в приложении .NET, и мы должны просто создать файл сертификата с помощью openssl?Будем признательны за любую помощь / предложения.
Решение
[К сожалению, я пока не могу ничего комментировать, поэтому опубликую это как ответ.]
Я вижу, что этот пост немного устарел, но я нахожусь в подобной ситуации и обнаружил его в файле redist.txt в Visual Studio 2008:
Windows SDK Files
Subject to the license terms for the software, the following files may be distributed unmodified:
MageUI.exe
Mage.exe
Makecert.exe
Не уверен, что что-то изменилось (и если моя интерпретация верна), но похоже, что makecert.exe, включенный как часть Windows SDK, который, в свою очередь, включен как часть установки VS2008, действительно может быть распространен. Р>
Другие советы
Теперь вы можете создавать самоподписанные сертификаты с помощью PowerShell Команды, которые вам нужны, это New-SelfSignedCertificate и Export-PfxCertificate. Пример: создать сертификат
New-SelfSignedCertificate -certstorelocation cert:\localmachine\my -dnsname orin.windowsitpro.internal
экспортировать его
Export-PfxCertificate -cert cert:\localMachine\my\CE0976529B02DE058C9CB2C0E64AD79DAFB18CF4 -FilePath e:\temp\cert.pfx -Password $pwd
Эта ссылка действительно полезна
http://windowsitpro.com/blog/creating-self-signed-certificates-powershellа> р>
У-у-у!Для тебя пришло время для pinvoke
crypt32 обеспечивает Сертификат createselfsigncertificate функция;если это удастся, вы можете сохранить его в личном хранилище пользователя (или в машинном хранилище, если вы работаете с повышенными правами).
Я не использовал OpenSSL, но я в той же лодке и нашел эту статью полезной:
Защита служб WCF с помощью сертификатов
Автор проведет вас через установку служб сертификации Microsoft, создаст центр сертификации, который можно добавить в доверенные центры сертификации (как на клиенте, так и на сервере, поскольку он самозаверяющий), а затем сгенерирует сертификаты клиента и сервера, которые объединяются в цепочку из подписанный сертификат CA.
Клиентские сертификаты вам не понадобятся, но они помогут вам создать самозаверяющий CA и сертификат сервера.
Одной из альтернатив для программной генерации сертификатов является C # -версия Bouncy Castle. http://www.bouncycastle.org/csharp/