Comment puis-je créer un certificat auto-signé plus fort que SHA-1?

8

Pour l'environnement de développement, je peux créer un certificat auto-signé dans IIS7.5. Mais ce certificat est SHA-1 et récemment les navigateurs s'en plaignent. Lorsque j'ouvre FireBug, je vois les avertissements suivants:

"Ce site utilise un certificat SHA-1; il est recommandé d'utiliser des certificats avec des algorithmes de signature qui utilisent des fonctions de hachage plus fortes que SHA-1."

Mes questions sont donc:

1) Existe-t-il un moyen de créer un certificat auto-signé plus fort que SHA-1?

2) Sinon, existe-t-il un moyen de dire au navigateur de ne plus afficher ces avertissements?

MISE À JOUR

J'ai fini par utiliser la réponse @vcsjones, mais cela ne m'a amené que jusqu'à présent. Là, nous avons quelques problèmes que j'ai dû résoudre avant de le faire fonctionner.

1) Pour une raison quelconque, je n'ai pas pu importer de certificat avec mot de passe. J'ai donc fini par en créer un sans.

2) Lorsque j'ai importé un certificat .pfx via IIS, j'obtenais «Une session de connexion spécifiée n'existe pas» lorsque j'essayais d'appliquer un nouveau certificat dans Modifier les liaisons. J'ai donc fait peu de recherches et trouvé cette réponse SO utile, en particulier la réponse de Mike L.

Une autre chose que j'ajouterais est que lorsque vous importez un certificat, n'oubliez pas de sélectionner le certificat .pfx. La sélection par défaut de l'assistant d'importation est * .cer que vous pouvez importer (erreur que j'ai faite), mais je n'ai pas pu voir le certificat dans IIS Server Certificates. Quand j'ai regardé de plus près, il manquait une petite clé dans l'icône. Maintenant, j'ai fait des recherches sur ce que j'ai pu réparer via l'article KB-889651 . Assurez-vous donc d'importer .pfx et cela fonctionnera sans réparation.

Une autre remarque, si vous rencontrez des problèmes de confiance avec ce certificat, importez-le également dans "Trusted Root Certificate Authority".

CrnaStena
la source

Réponses:

8

Sûr. L' makecertutilitaire qui fait partie du SDK Windows peut le faire:

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

Le -aparamètre définit l'algorithme de hachage. Cela crache un fichier PVK et DER .cer. Vous pouvez bien sûr également changer le nom commun en tout ce que vous souhaitez, je viens d'utiliser localhost comme exemple. Vous pouvez les combiner dans un PFX (ce que IIS préfère utiliser lors de l'importation d'un certificat) en utilisant pvk2pfx(également une partie du SDK):

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

Cela prend simplement les deux fichiers makecertgénérés et les combine dans un fichier PKCS12 .pfx.

Avec le fichier PFX résultant, vous ouvrez IIS et l'importez sous Certificats de serveur, puis modifiez les liaisons de votre site pour utiliser le nouveau certificat.

vcsjones
la source
je l'ai créé, mais où puis-je trouver cert.cer et out.pfx?
peter
1
@peter c'est le répertoire de travail de la console. Vous verrez quelque chose comme C:\Path\ToADirectory>dans l'invite de commande. C'est votre répertoire de travail.
vcsjones
lorsque j'ai essayé d'importer out.pfx dans iis, il a demandé un mot de passe.J'ai tapé le mot de passe que j'ai défini lors de la création du certificat en utilisant votre commentaire.Mais il a échoué, connaissez-vous la raison?
peter
vcsjones j'ai installé le certificat dans le système, puis j'ai défini le binind dans IIS, lorsque j'ai parcouru dans Firefox, il ne s'ouvre pas, mais dans IE, j'ai continué l'invite d'erreur et je peux voir le site Web, mais il est affiché comme une icône comme le certificat n'est pas de confiance autorité de certification
peter
1
Un point à noter est que makecert est désormais obsolète. Pour Windows 8.1 / Windows Server 2012 R2 et supérieur, vous pouvez utiliser à la place la commande Powershell décrite ici: stackoverflow.com/a/19446469/914490
Mike
6

J'utilise un ordinateur Windows 7 Enterprise verrouillé au travail et en tant que tel, je ne peux pas installer le SDK Windows pour y accéder makecert. Voici comment j'ai créé mon certificat auto-signé sha256 (extrait de https://core.telegram.org/bots/self-signed ):

  1. Décidez dans quel répertoire vous souhaitez enregistrer votre certificat
  2. Créez un fichier texte dans ce répertoire appelé template.txtavec le contenu suivant:

    [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. Remplacez {your.domain.com}par l'adresse que vous utiliserez pour accéder à votre site, par exemple"CN=localhost"

  4. Ouvrez une invite de commande et accédez à votre répertoire de certificats
  5. Courir certreq -new template.txt RequestFileOut
  6. Vous aurez besoin de connaître le numéro de série, alors exécutez certutil -store -user mypour obtenir un vidage qui comprend le numéro de série
  7. Remplacez {SERIALNUMBER}par le numéro de série dans le vidage et {YOURDER}.crtpar le nom du fichier de sortie:certutil -user -store -split my {SERIALNUMBER} {YOURDER}.crt
  8. Remplacez {YOURDER}.crtpar le nom du fichier d'entrée et {YOURPEM}.cerpar le nom du fichier de sortie:certutil -encode {YOURDER}.crt {YOURPEM}.cer
  9. Remplacez {your.domain.com}par votre nom de domaine réel (test) et {YOURPKCS}.pfxpar le nom du fichier de sortie:certutil -exportpfx -user {your.domain.com} {YOURPKCS}.pfx NoChain

Après cela, je suis allé au Gestionnaire IIS, Sites -> {nom du site} -> Liaisons ... (sous "Modifier le site"). J'ai ensuite cliqué sur https / 443 car je l'avais déjà configuré, Modifier ... et sélectionné le nouveau certificat dans la liste.

Firefox s'est plaint que mon site utilisait un certificat auto-signé, je l'ai donc ajouté à titre d'exception, et voilà! ça a marché!

CJ Dennis
la source
C'est l'exemple le plus efficace sans aucune installation, ce qui n'est parfois pas possible sur le serveur prod.
hungryMind
Je n'ai pas pu faire fonctionner cela sur ma boîte Windows 7, mais cela a très bien fonctionné sur le serveur 2012. En guise de remarque, {yourpem} .cer et {yourpkcs.pfx} sont générés par les deux commandes dans lesquelles ils sont répertoriés. Vous ' ll voudra probablement utiliser le même nom que {yourder} .crt. Donc pour plus de simplicité, {yourcert} .crt, {yourcert} .cer, {yourcert} .pfx
DaBlue
0

Oui, j'ai reçu le message d'erreur / d'avertissement "Une session de connexion spécifiée n'existe pas".

J'ai juste cliqué sur OK une deuxième fois et il l'a accepté.

anthonymaw
la source