Certificado autofirmado en Windows sin makecert?
-
06-07-2019 - |
Pregunta
Tenemos una aplicación de servidor de Windows de tipo retráctil donde necesitamos crear un certificado autofirmado en el servidor para que lo utilicen algunos servicios web de WCF. De nuestras búsquedas en la web, parece que la utilidad makecert en PlatformSDK de Microsoft no se puede distribuir con nuestra aplicación, por lo que estamos buscando alternativas.
¿Alguien sabe cómo usar OpenSSL para crear un certificado y llevarlo al almacén de certificados de Windows LocalMachine? O, alternativamente, ¿es sencillo insertar el certificado en la tienda en una aplicación .NET y deberíamos crear el archivo de certificado con openssl? Cualquier ayuda / sugerencia sería apreciada.
Solución
[Desafortunadamente, todavía no puedo comentar nada, así que publicaré esto como respuesta.]
Veo que esta publicación es un poco antigua, pero estoy en un barco similar y encontré esto en el archivo redist.txt de 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
No estoy seguro de si algo ha cambiado (y si mi interpretación es correcta), pero parece que makecert.exe incluido como parte del SDK de Windows, que a su vez se incluye como parte de la instalación de VS2008, en realidad puede redistribuirse.
Otros consejos
Ahora puede crear certificados autofirmados con PowerShell Los comandos que necesita son New-SelfSignedCertificate y Export-PfxCertificate. Ex: para crear un certificado
New-SelfSignedCertificate -certstorelocation cert:\localmachine\my -dnsname orin.windowsitpro.internal
para exportarlo
Export-PfxCertificate -cert cert:\localMachine\my\CE0976529B02DE058C9CB2C0E64AD79DAFB18CF4 -FilePath e:\temp\cert.pfx -Password $pwd
Este enlace es realmente útil
http://windowsitpro.com/blog/creating-self-signed-certificates-powershell
Woohoo! Es hora de pinvoke para ti
crypt32 proporciona una función CertCreateSelfSignCertificate ; si eso tiene éxito, puede almacenarlo en la tienda personal del usuario (o en la tienda de máquinas, suponiendo que trabaje de forma elevada)
No he usado OpenSSL, pero estoy en el mismo barco y he encontrado útil este artículo:
Asegurando los servicios WCF con certificados
El autor lo guía a través de la instalación de Microsoft Certificate Services, creando una CA que se puede agregar a las autoridades de certificación confiables (tanto en el cliente como en el servidor, ya que está autofirmado), y luego genera certificados de cliente y servidor que se encadenan certificado CA certificado.
No necesitará los certificados del cliente, pero le ayuda a crear un certificado de CA y servidor autofirmado.
Una alternativa para generar certificados mediante programación es la versión C # de Bouncy Castle. http://www.bouncycastle.org/csharp/