¿Cómo crear un archivo .pfx a partir de un certificado y una clave privada?
Necesito .pfx
un archivo para instalar https en un sitio web en IIS.
Tengo dos archivos separados: certificado ( .cer
o pem
) y clave privada ( .crt
), pero IIS solo acepta .pfx
archivos.
Obviamente instalé el certificado y está disponible en el administrador de certificados (mmc), pero cuando selecciono el Asistente para exportación de certificados no puedo seleccionar el formato PFX (está atenuado)
¿Existe alguna herramienta para hacer eso o ejemplos de C# sobre cómo hacerlo mediante programación?
Necesitará usar openssl.
openssl pkcs12 -export -out domain.name.pfx -inkey domain.name.key -in domain.name.crt
El archivo de clave es solo un archivo de texto que contiene su clave privada.
Si tiene una CA raíz y certificados intermedios, inclúyalos también usando múltiples -in
parámetros
openssl pkcs12 -export -out domain.name.pfx -inkey domain.name.key -in domain.name.crt -in intermediate.crt -in rootca.crt
Si tiene un archivo crt incluido que usa, por ejemplo, con nginx, puede pasarlo junto con el certificado, todo en uno:
cat domain.name.crt | tee -a domain.name.bundled.crt
cat intermediate.crt | tee -a domain.name.bundled.crt
cat rootca.crt | tee -a domain.name.bundled.crt
openssl pkcs12 -export -out domain.name.pfx \
-inkey domain.name.key \
-in domain.name.bundled.crt
Puedes instalar openssl desde aquí: openssl
Solución para Windows que no requiere OpenSSL instalado
Recientemente estuve tratando de resolver el mismo problema, y solo tenía una computadora portátil con Windows sin openssl instalado (y sin suficientes derechos de administrador para instalarlo). Resulta que Windows tiene una utilidad incorporada llamada certutil
que es capaz de combinar archivos .crt y .key en .pfx. Los documentos están aquí .
Debe crear una nueva carpeta y colocarlo a usted .crt
y a sus archivos clave. Cambie el nombre de ambos archivos para que tengan el mismo nombre (pero con diferente extensión):
{{sitename}}.crt
{{siteName}}.key
En caso de que su archivo clave sea un txt normal, simplemente cambie la extensión a .key
.
Después de eso, abra cmd en esa carpeta y ejecutecertutil -mergepfx [INPUTFILE] [OUTPUTFILE]
Ejemplo:
archivo de certificado:mySite.crt
archivo de clave:mySite.key
Comando certutil:certutil -mergepfx mySite.crt mySite.pfx
Nota: se le pedirá que proporcione una contraseña para .pfx
el archivo recién creado (no olvide memorizarla/almacenarla), ya que será necesaria durante la importación del certificado en el sistema de destino.
Si está buscando una GUI de Windows, consulte DigiCert. Acabo de usar esto y fue bastante simple.
En la pestaña SSL, primero importé el certificado. Luego, una vez que seleccioné el Certificado, pude exportar como PFX, con y sin un archivo de claves.
https://www.digicert.com/util
La utilidad de línea de comandos Microsoft Pvk2Pfx parece tener la funcionalidad que necesita:
Pvk2Pfx (Pvk2Pfx.exe) es una herramienta de línea de comandos que copia la información de clave pública y privada contenida en archivos .spc, .cer y .pvk en un archivo de Intercambio de información personal (.pfx).
http://msdn.microsoft.com/en-us/library/windows/hardware/ff550672(v=vs.85).aspx
Nota: si necesita/quiere/prefiere una solución C#, puede considerar utilizar la http://www.bouncycastle.org/api .
NO necesita openssl o makecert ni nada de eso. Tampoco necesita la clave personal que le proporcionó su CA. Casi puedo garantizar que el problema es que espera poder utilizar los archivos clave y cer proporcionados por su CA, pero no se basan en "el método IIS".
Certificados SSL para IIS con PFX de una vez por todas - Explicación de SSL e IIS - http://rainabba.blogspot.com/2014/03/ssl-certs-for-iis-with-pfx-once-and-for.html
Utilice la interfaz de usuario de "Certificados de servidor" de IIS para "Generar solicitud de certificado" (los detalles de esta solicitud están fuera del alcance de este artículo, pero son críticos). Esto le dará un CSR preparado para IIS. Luego le entrega esa CSR a su CA y solicita un certificado. Luego tomas el archivo CER/CRT que te dan, regresas a IIS, "Solicitud de certificado completa" en el mismo lugar donde generaste la solicitud. Es posible que le solicite un .CER y es posible que tenga un .CRT. Ellos son la misma cosa. Simplemente cambie la extensión o use el archivo . menú desplegable de extensión para seleccionar su .CRT. Ahora proporcione un "nombre descriptivo" adecuado ( *.yourdomain.example
, yourdomain.example
, foo.yourdomain.example
, etc.) ¡ESTO ES IMPORTANTE! Esto DEBE coincidir con lo que configuró el CSR y lo que le proporcionó su CA. Si solicitó un comodín, su CA debe haber aprobado y generado un comodín y usted debe utilizar el mismo. Si su CSR se generó para foo.yourdomain.example
, DEBE proporcionar la misma en este paso.