¿Cómo crear un archivo .pfx a partir del certificado y la clave privada?

363

Necesito el archivo .pfx para instalar https en el sitio web en IIS.

Tengo dos archivos separados: certificado (.cer o pem) y clave privada (.crt) pero IIS solo acepta archivos .pfx.

Obviamente instalé el certificado y está disponible en el administrador de certificados (mmc) pero cuando selecciono el Asistente de exportación de certificados no puedo seleccionar el formato PFX (está atenuado)

¿Hay alguna herramienta para hacer eso o ejemplos de C # de hacerlo programáticamente?

jlp
fuente
2
posible duplicado de Convertir un certificado CERT / PEM a un certificado PFX
Daniel DiPaolo
1
cierto, pero su respuesta no es clara y no soluciona nada en mi caso
jlp
@alexl ¿hay una versión de Windows?
jlp
Openssl es completamente innecesario en casi todos los casos. Acabo de agregar mi respuesta (que creo una entrada de blog para proporcionar). La ironía es que cuando genera la CSR según lo previsto, es probable que ni siquiera necesite el PFX.
rainabba

Respuestas:

554

Deberá 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 con su clave privada.

Si tiene una CA raíz y certificaciones intermedias, inclúyalas también usando múltiples -inparámetros

openssl pkcs12 -export -out domain.name.pfx -inkey domain.name.key -in domain.name.crt -in intermediate.crt -in rootca.crt

Puede instalar openssl desde aquí: openssl

jdehlin
fuente
11
"El archivo de clave es solo un archivo de texto con su clave privada". Es cierto, excepto cuando no lo es.
Casey
37
Gracias, también añadiremos si tiene una CA raíz o intermiediate cert puede añadir que mediante el suministro de múltiples -en parámetros:openssl pkcs12 -export -out domain.name.pfx -inkey domain.name.key -in domain.name.crt -in intermediate.crt -in rootca.crt
gerrytan
10
Hizo el trabajo por mí. Como nota menor, ejecutar esto en una máquina con Windows requiere que ejecute openssl en un símbolo del sistema del Administrador.
Martin Costello
13
¿De dónde obtienes el archivo de clave? Obtuve un certificado SSL emitido, pero no veo un archivo de claves en ningún lado. Acabo de recibir un archivo p7b y un montón de archivos * .crt.
Knelis
11
Para que esto funcione en openssl 1.0.2m, tuve que especificar -certfile intermediate.crt -certfile rootca.crtantes de que se me solicitara protegerlo .pfxcon una frase de contraseña / contraseña. Creo que esto posiblemente se deba a .keyque no coincidió con los -inarchivos adicionales que dieron como resultado el mensaje de error "Ningún certificado coincide con la clave privada" que estaba recibiendo.
dragon788
36

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 información de clave pública y clave 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 #, entonces puede considerar usar el http://www.bouncycastle.org/ api.

Seymour
fuente
1
-spc argumento para el archivo .cer
BozoJoe
2
C: \ Archivos de programa (x86) \ Windows Kits \ 10 \ bin \ 10.0.15063.0 \ x64 \ pvk2pfx.exe
Stefan Steiger
35

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 exportarlo como PFX, con y sin un archivo de claves.

https://www.digicert.com/util

joelnet
fuente
15
Cuando hago esto, me dice que no tengo la clave privada importada en mi computadora. Cual es verdad.
Niels Brinch
66
@NielsBrinch Cuando hago esto, también me dice que no tengo la clave privada importada en mi computadora. Esperar que es falsa, está en la misma carpeta que el certificado ...
aBertrand
@NielsBrinch Para resolver este problema, tuve que volver a enviar un nuevo CSR y luego descargar el certificado nuevamente cuando se procesó, la clave privada estaba oculta en el servidor / máquina en la que creó el CSR. Esto resolvió ese mensaje de error.
Paddymac
Puedo recomendar DigiCert en base a varios años de experiencia con ellos.
mmell
No olvide incluir la clave privada en el directorio raíz del DigiCertUtil.exeejecutable. Lo más fácil es simplemente copiarlo a la carpeta del certificado.
Jonas
32

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 usar los archivos clave y cer proporcionados por su CA pero no se basan en "la forma IIS". Estoy tan cansado de ver información mala y difícil aquí que decidí bloguear el tema y la solución. Cuando te des cuenta de lo que está sucediendo y veas lo fácil que es, querrás abrazarme :)

SSL Certs para IIS con PFX de una vez por todas - SSL e IIS explicados - http://rainabba.blogspot.com/2014/03/ssl-certs-for-iis-with-pfx-once-and-for.html

Utilice la IU "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 esos detalles son críticos). Esto le dará una CSR preparada para IIS. Luego le da esa CSR a su CA y solicita un certificado. Luego tome el archivo CER / CRT que le dan, regrese a IIS, "Complete Certificate Request" en el mismo lugar donde generó la solicitud. Puede solicitar un .CER y usted podría tener un .CRT. Ellos son la misma cosa. Simplemente cambie la extensión o use el .desplegable de extensiones para seleccionar su .CRT. Ahora proporcione un "nombre descriptivo" adecuado (* .yourdomain.com, yourdomain.com, foo.yourdomain.com, etc.) ¡ESTO ES IMPORTANTE! Esto DEBE coincidir con lo que configuró la 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 usarlo. Si su CSR se generó para foo.yourdomain.com, DEBE proporcionar lo mismo en este paso.

rainabba
fuente
2
La pregunta se abrió con: "Necesito el archivo .pfx para instalar https en el sitio web en IIS".
rainabba
34
¿Puedes incluir contenido relevante de tu publicación en tu respuesta, por favor? De esa manera, la respuesta sigue siendo relevante incluso si su blog desaparece. Todavía puedes vincular a tu blog. Tal como están las cosas, hay 0 información útil en el contenido de la respuesta.
Deanna
16
Esta es la forma más simple si está solicitando un nuevo certificado, sin embargo, no funcionará si ya tiene un certificado y / o clave privada (por ejemplo, uno que utilizó anteriormente con apache) porque la solicitud de firma de certificado de IIS generará un nuevo certificado privado clave. Encuentro este aspecto de IIS realmente molesto ya que todo lo que hace la "solicitud completa" es combinar la clave privada con el certificado público para producir un pfx, por qué no podría aceptarlos como archivos con formato PEM separados, quién sabe.
Chris Chilvers
2
Si bien agradezco que su solución sea probablemente "la forma correcta de hacer" las cosas, creo que es más esfuerzo que entrometerse con openssl: una herramienta, una llamada de línea de comandos, una contraseña, listo. Además, no sé si todas las empresas de SSL apoyan este enfoque.
Jan Bühler
8
Me temo que su respuesta no ayuda si el certificado se generó en otro lugar. De acuerdo, IIS espera generar y conservar la clave privada en sí, a veces eso no es una opción.
staticsan
8

Creé el archivo .pfx a partir de archivos .key y .pem.

Me gusta esto openssl pkcs12 -inkey rootCA.key -in rootCA.pem -export -out rootCA.pfx

Siim Nelis
fuente
1
Este es básicamente el mismo comando que utilicé, pero necesitaba agregar winpty antes de openssl (por ejemplo, winpty openssl pkcs12 ....) mientras usaba Git bash, que es una solución común para openssl en Windows.
smoore4
No necesitaba el -exportinterruptor.
mmell
7

https://msdn.microsoft.com/en-us/library/ff699202.aspx

((las citas relevantes del artículo están a continuación))

A continuación, debe crear el archivo .pfx que usará para firmar sus implementaciones. Abra una ventana del símbolo del sistema y escriba el siguiente comando:

PVK2PFX –pvk yourprivatekeyfile.pvk –spc yourcertfile.cer –pfx yourpfxfile.pfx –po yourpfxpassword

dónde:

  • pvk: yourprivatekeyfile.pvk es el archivo de clave privada que creó en el paso 4.
  • spc: yourcertfile.cer es el archivo de certificado que creó en el paso 4.
  • pfx: yourpfxfile.pfx es el nombre del archivo .pfx que se creará.
  • po - yourpfxpassword es la contraseña que desea asignar al archivo .pfx. Se le solicitará esta contraseña cuando agregue el archivo .pfx a un proyecto en Visual Studio por primera vez.

(Opcionalmente (y no para el OP, sino para futuros lectores), puede crear el archivo .cer y .pvk desde cero) (lo haría ANTES de lo anterior). Tenga en cuenta que mm / dd / aaaa son marcadores de posición para las fechas de inicio y finalización. Consulte el artículo de msdn para obtener la documentación completa.

makecert -sv yourprivatekeyfile.pvk -n "CN=My Certificate Name" yourcertfile.cer -b mm/dd/yyyy -e mm/dd/yyyy -r
granadaCoder
fuente
6

Necesitas usar la herramienta makecert.

Abra un símbolo del sistema como administrador y escriba lo siguiente:

makecert -sky exchange -r -n "CN=<CertificateName>" -pe -a sha1 -len 2048 -ss My "<CertificateName>.cer"

Donde <CertifcateName>= el nombre de su certificado para crear.

Luego puede abrir el complemento Administrador de certificados para la consola de administración escribiendo certmgr.msc en el menú Inicio, haga clic en personal> certificados> y su certificado debería estar disponible.

Aquí hay un artículo.

https://azure.microsoft.com/documentation/articles/cloud-services-certs-create/

BentOnCoding
fuente
3
No puedo En el asistente de exportación, la opción pfx está atenuada
jlp
mi certificado está disponible en certifacate manager. Lo que no puedo hacer es exportar a formato pfx. ¿Qué hace tu instrucción de línea de comando?
jlp
Intente crear el certificado según lo recomendado y avíseme si funciona. Probablemente tomará 5 minutos. El artículo vinculado ofrece una explicación completa de lo que está sucediendo.
BentOnCoding
No es lo que estoy buscando. No quiero hacer cert. yo mismo. Compré cert de la autoridad cert en 2 archivos. Prefiero usar la herramienta OpenSSL
jlp
5

Tengo un enlace con su requerimiento. Combine archivos CRT y KEY en un PFX con OpenSSL

Extractos del enlace de arriba:

Primero, necesitamos extraer el certificado de CA raíz del archivo .crt existente, porque lo necesitamos más adelante. Abra el archivo .crt y haga clic en la pestaña Ruta de certificación.

Haga clic en el certificado superior (en este caso, VeriSign) y presione Ver certificado. Seleccione la pestaña Detalles y presione Copiar a archivo ...

Seleccione el certificado X.509 codificado Base-64 (.CER) Guárdelo como rootca.cer o algo similar Colóquelo en la misma carpeta que los otros archivos.

Cambie el nombre de rootca.cer a rootca.crt. Ahora deberíamos tener 3 archivos en nuestra carpeta desde los cuales podemos crear un archivo PFX.

Aquí es donde necesitamos OpenSSL. Podemos descargarlo e instalarlo en Windows , o simplemente abrir el terminal en OSX.

EDITAR:

  1. Hay un enlace de soporte con información paso a paso sobre cómo instalar el certificado.

  2. Después de instalar con éxito, exporte el certificado, elija el .pfxformato, incluya la clave privada.

    Nota importante : para exportar el certificado en formato .pfx, debe seguir los pasos en la misma máquina desde la que solicitó el certificado .

  3. El archivo importado se puede cargar al servidor.

sudhAnsu63
fuente
1
¿Puede usted explicar por favor? ¿Cómo creó exactamente el archivo PFX del archivo CERT? ¿Dónde o cómo hizo el archivo KEY? Por favor, todo es confuso.
3
¿Puede explicar amablemente desde aquí cómo obtuvieron el archivo KEY? por ejemplo:openssl pkcs12 -inkey example.com.key -in example.com.crt -export -out example.com.pfx
5

Esta es, con diferencia, la forma más fácil de convertir archivos * .cer a * .pfx:

Simplemente descargue el convertidor de certificados portátil de DigiCert: https://www.digicert.com/util/pfx-certificate-management-utility-import-export-instructions.htm

Ejecútelo, seleccione un archivo y obtenga su * .pfx !!

usuario1613797
fuente
¡Excelente! Esto funcionó. Tenía el archivo .p7b. Importé eso a mi IIS usando las instrucciones proporcionadas por GoDaddy. Luego generó el archivo .cer (archivo de clave) y luego usó esta utilidad para obtener el pfx.
Shiva Naru
La herramienta Digicert es, de lejos, la mejor.
L_7337
1
No veo ninguna forma de hacer lo que el OP quiere hacer con esta herramienta. Parece que solo le permite exportar certificados, no crearlos a partir de archivos clave y cer.
NickG
1
Probablemente valga la pena mencionar que primero debe "instalar" el certificado, y luego volver a la pestaña SSL y "exportarlo" para obtener el archivo pfx real.
access_granted
3

Cuando dice que el certificado está disponible en MMC, ¿está disponible en "Usuario actual" o "Equipo local"? Descubrí que solo puedo exportar la clave privada si está en la computadora local.

Puede agregar el complemento para Certificados a MMC y elegir para qué cuenta debe administrar los certificados. Elija computadora local. Si su certificado no está allí, impórtelo haciendo clic derecho en la tienda y seleccionando Todas las tareas> Importar.

Ahora navegue hasta su certificado importado en la versión de computadora local del complemento del certificado. Haga clic con el botón derecho en el certificado y elija Todas las tareas> Exportar. La segunda página del asistente de exportación debe preguntarle si desea exportar la clave privada. Seleccione Sí La opción PFX ahora será la única disponible (está atenuada si selecciona no y la opción para exportar la clave privada no está disponible en la cuenta de Usuario actual).

Se le pedirá que establezca una contraseña para el archivo PFX y luego que configure el nombre del certificado.

Ryan Elkins
fuente
1

Yo estaba teniendo el mismo problema. Mi problema fue que la computadora que generó la solicitud de certificado inicial se había bloqueado antes de que se completara el proceso extendido de validación de SSL. Necesitaba generar una nueva clave privada y luego importar el certificado actualizado del proveedor de certificados. Si la clave privada no existe en su computadora, entonces no puede exportar el certificado como pfx. La opción está atenuada.

Bill Mahoney
fuente
1

Aunque probablemente sea más fácil generar una nueva CSR usando IIS (como dijo @rainabba), suponiendo que tenga los certificados intermedios, hay algunos convertidores en línea, por ejemplo: https://www.sslshopper.com/ssl-converter. html

Esto le permitirá crear un PFX a partir de su certificado y clave privada sin tener que instalar otro programa.

Guillermo
fuente
0

En la mayoría de los casos, si no puede exportar el certificado como un PFX (incluida la clave privada) es porque MMC / IIS no puede encontrar / no tiene acceso a la clave privada (utilizada para generar la CSR). Estos son los pasos que seguí para solucionar este problema:

  • Ejecute MMC como administrador
    • Genere la CSR usando MMC. Siga estas instrucciones para hacer que el certificado sea exportable.
  • Una vez que obtenga el certificado de la CA (crt + p7b), impórtelos (Personal \ Certificados y Autoridad de certificación intermedia \ Certificados)
  • IMPORTANTE: haga clic con el botón derecho en su nuevo certificado (Personal \ Certificados) Todas las tareas ... Administre la clave privada y asigne permisos a su cuenta o a Todos (¡riesgoso!). Puede volver a los permisos anteriores una vez que haya terminado.
  • Ahora, haga clic con el botón derecho en el certificado y seleccione Todas las tareas ... Exportar, y debería poder exportar el certificado, incluida la clave privada como un archivo PFX, ¡y puede cargarlo en Azure!

¡Espero que esto ayude!

Jose parra
fuente
Ya tengo mi certificado en Personal \ Certificados, pero con el botón derecho no aparece "Administrar clave privada". Las opciones que obtengo son: "Solicitar certificado con nueva clave ...", "Renovar certificado con nueva clave ..." y "Exportar" ... ¿Tiene alguna idea de lo que me falta?
Gabrielizalo
1
Lo arreglé con el convertidor de certificados portátil de DigiCert: digicert.com/util/…
Gabrielizalo
Falló en "generar CSR". Si ya tiene la clave privada, no necesita generar una CSR. Por favor lea la pregunta original.
NickG
0

Sé que algunos usuarios han hablado sobre instalar esto y aquello y agregar programas de líneas de comando y descargar ...

Personalmente soy flojo y encuentro todos estos métodos engorrosos y lentos, además no quiero descargar nada y encontrar las líneas correctas de cmd si no tengo que hacerlo.

La mejor manera para mí en mi servidor IIS personal es usar RapidSSLOnline. Esta es una herramienta que está en un servidor que le permite cargar su certificado y clave privada y puede generar un archivo pfx para usted que puede importar directamente a IIS.

El enlace está aquí: https://www.rapidsslonline.com/ssl-tools/ssl-converter.php

A continuación se muestran los pasos utilizados para el escenario solicitado.

  1. Seleccionar tipo actual = PEM
  2. Cambiar para = PFX
  3. Sube tu certificado
  4. Sube tu clave privada
  5. Si tiene un certificado ROOT CA o un certificado intermedio, cárguelos también
  6. Establezca una contraseña de su elección, utilizada en IIS
  7. Haz clic en reCaptcha para demostrar que no eres un bot
  8. Haga clic en Convertir

Y eso es todo, debe tener un PFX descargado y usarlo en su proceso de importación en IIS.

Espero que esto ayude a otras personas tecnológicas perezosas y de mentalidad.

TheNerdyNerd
fuente
66
¿Es seguro cargar su certificado en un sitio web de terceros que no le emitió el certificado?
Kunal
1
Hola, SSL rápido, creo que es propiedad de GeoTrust. Ambas Autoridades para obtener un certificado. Por lo que puedo decir ... digital.com/ssl-certificates/geotrust digital.com/ssl-certificates/RAPIDSSL con respecto a la seguridad, creo que sería una explotación mínima ya que su certificado sería generado por un sistema externo y tiene que ser válido aún. En mi caso, utilicé sslforfree.com, que debe renovarse cada 90 días, pero es un pequeño precio a pagar por un costo menor, especialmente para mi sitio de demostraciones, etc.
TheNerdyNerd
55
@Kunal: Esta podría ser una forma simple de obtener archivos de certificado de prueba / desarrollo, pero cargar su clave privada a otra parte es un nogo general para entornos de producción seguros.
Stefan
0

Para los archivos cfx de SSLForFree, encuentro este https://decoder.link/converter más fácil.

Simplemente asegúrese de que PEM -> PKCS # 12 esté seleccionado, luego cargue el certificado, ca_bundle y los archivos clave y conviértalos. Recuerde la contraseña, luego cargue con la contraseña que utilizó y agregue enlaces.

Pete Herc
fuente