¿Cómo puedo crear un certificado autofirmado que sea más fuerte que SHA-1?

8

Para el entorno de desarrollo, puedo crear crear certificado autofirmado en IIS7.5. Pero ese certificado es SHA-1 y recientemente los navegadores se quejan de ello. Cuando abro FireBug veo las siguientes advertencias:

"Este sitio utiliza un Certificado SHA-1; se recomienda que use certificados con algoritmos de firma que usen funciones hash más fuertes que SHA-1".

Entonces mis preguntas son:

1) ¿Hay alguna forma de crear un certificado autofirmado que sea más fuerte que SHA-1?

2) Si no, ¿hay alguna manera de decirle al navegador que deje de mostrar estas advertencias?

ACTUALIZAR

Terminé usando la respuesta @vcsjones, pero eso solo me llevó hasta ahora. Allí tuvimos un par de problemas que tuve que resolver antes de hacerlo funcionar.

1) Por alguna razón no pude importar el certificado con contraseña. Así que terminé creando uno sin él.

2) Cuando importé el certificado .pfx a través de IIS, seguí recibiendo "No existe una sesión de inicio de sesión especificada" cuando intenté aplicar un nuevo certificado en Editar enlaces. Así que investigué poco y encontré que esta respuesta SO era útil, específicamente la respuesta de Mike L.

Otra cosa que agregaría es que cuando importe un certificado, recuerde seleccionar el certificado .pfx. La selección predeterminada del asistente de importación es * .cer, que puede importar (error que cometí), pero luego no pude ver el certificado en los certificados del servidor IIS. Cuando miré más de cerca, me faltaba una pequeña llave en el ícono. Ahora, investigué que pude repararlo a través del artículo KB-889651 . Así que asegúrese de importar .pfx y funcionará sin reparar.

Otra nota, si tiene problemas de confianza con este certificado, impórtelo también a "Trusted Root Certificate Authority".

CrnaStena
fuente

Respuestas:

8

Por supuesto. La makecertutilidad que forma parte del SDK de Windows puede hacer eso:

makecert -len 2048 -r -a sha256 -sv private.pvk -n CN=localhost cert.cer

El -aparámetro establece el algoritmo hash. Esto escupe un PVK y un archivo DER .cer. Por supuesto, también puede cambiar el nombre común a cualquier cosa que desee, solo utilicé localhost como ejemplo. Puede combinarlos en un PFX (lo que IIS prefiere usar al importar un certificado) usando pvk2pfx(también parte del SDK):

pvk2pfx -spc cert.cer -pvk private.pvk -pfx out.pfx

Esto solo toma los dos archivos makecertgenerados y los combina en un archivo PKCS12 .pfx.

Con el archivo PFX resultante, abriría IIS e importaría bajo Certificados de servidor, luego cambiaría los enlaces de su sitio para usar el nuevo certificado.

vcsjones
fuente
Lo creé, pero ¿dónde encuentro cert.cer y out.pfx?
Peter
1
@peter es el directorio de trabajo de la consola. Verá algo como C:\Path\ToADirectory>en el símbolo del sistema. Ese es tu directorio de trabajo.
vcsjones
cuando traté de importar out.pfx en iis, me pidió una contraseña. Escribí la contraseña que configuré al crear el certificado utilizando su comentario. Pero falló, ¿sabe el motivo?
Peter
vcsjones instalé el certificado en el sistema y luego configuré el binind en IIS, cuando navegué en Firefox no se está abriendo, pero en IE continué el mensaje de error y pude ver el sitio web, pero se muestra como el icono como certificado no es de confianza autoridad de certificación
peter
1
Un punto a tener en cuenta es que makecert ahora está en desuso. Para Windows 8.1 / Windows Server 2012 R2 y versiones posteriores, puede utilizar el comando Powershell descrito aquí: stackoverflow.com/a/19446469/914490
Mike
6

Estoy usando una computadora Windows 7 Enterprise bloqueada en el trabajo y, como tal, no puedo instalar el SDK de Windows para acceder makecert. Así es como creé mi certificado autofirmado sha256 (tomado de https://core.telegram.org/bots/self-signed ):

  1. Decida en qué directorio desea guardar su certificado
  2. Cree un archivo de texto en ese directorio llamado template.txtcon los siguientes contenidos:

    [NewRequest]
    
    ; At least one value must be set in this section
    Subject = "CN={your.domain.com}"
    KeyLength = 2048
    KeyAlgorithm = RSA
    HashAlgorithm = sha256
    ;MachineKeySet = true
    RequestType = Cert
    UseExistingKeySet=false ;generates a new private key (for export)
    Exportable = true ;makes the private key exportable with the PFX
    
  3. Reemplace {your.domain.com}con la dirección que usará para acceder a su sitio, por ej."CN=localhost"

  4. Abra un símbolo del sistema y cambie a su directorio de certificados
  5. correr certreq -new template.txt RequestFileOut
  6. Necesitará saber el número de serie, así que ejecute certutil -store -user mypara obtener un volcado que incluya el número de serie
  7. Reemplace {SERIALNUMBER}con el número de serie en el volcado y {YOURDER}.crtcon el nombre del archivo de salida:certutil -user -store -split my {SERIALNUMBER} {YOURDER}.crt
  8. Reemplace {YOURDER}.crtcon el nombre del archivo de entrada y {YOURPEM}.cercon el nombre del archivo de salida:certutil -encode {YOURDER}.crt {YOURPEM}.cer
  9. Reemplace {your.domain.com}con su nombre de dominio real (prueba) y {YOURPKCS}.pfxcon el nombre del archivo de salida:certutil -exportpfx -user {your.domain.com} {YOURPKCS}.pfx NoChain

Después de eso, fui al Administrador de IIS, Sitios -> {nombre del sitio} -> Enlaces ... (en "Editar sitio"). Luego hice clic en https / 443 porque ya lo tenía configurado, Editar ... y seleccioné el nuevo certificado de la lista.

Firefox se quejó de que mi sitio estaba usando un certificado autofirmado, así que lo agregué como una excepción, ¡y listo! ¡funcionó!

CJ Dennis
fuente
Este es el ejemplo más funcional sin ninguna instalación, que a veces no es posible en el servidor prod.
hungryMind
No pude hacer que esto funcionara en mi cuadro de Windows 7, pero funcionó muy bien en el servidor 2012. Como nota al margen {yourpem} .cer y {yourpkcs.pfx} son generados por los dos comandos que están listados. Probablemente quiera usar el mismo nombre que {yourder} .crt. Entonces, por simplicidad, {yourcert} .crt, {yourcert} .cer, {yourcert} .pfx
DaBlue
0

Sí, recibí el mensaje de error / advertencia "No existe una sesión de inicio de sesión especificada".

Acabo de hacer clic en Aceptar por segunda vez y lo aceptó.

anthonymaw
fuente