Wie kann ich ein selbstsigniertes Zertifikat erstellen, das stärker als SHA-1 ist?

8

Für die Entwicklungsumgebung kann ich in IIS7.5 ein selbstsigniertes Zertifikat erstellen. Aber dieses Zertifikat ist SHA-1 und in letzter Zeit beschweren sich Browser darüber. Wenn ich FireBug öffne, werden folgende Warnungen angezeigt:

"Diese Site verwendet ein SHA-1-Zertifikat. Es wird empfohlen, Zertifikate mit Signaturalgorithmen zu verwenden, die Hash-Funktionen verwenden, die stärker als SHA-1 sind."

Meine Fragen sind also:

1) Gibt es eine Möglichkeit, ein selbstsigniertes Zertifikat zu erstellen, das stärker als SHA-1 ist?

2) Wenn nicht, gibt es eine Möglichkeit, den Browser anzuweisen, diese Warnungen nicht mehr anzuzeigen?

AKTUALISIEREN

Am Ende habe ich die Antwort von @vcsjones verwendet, aber das hat mich nur so weit gebracht. Dort mussten wir einige Probleme lösen, bevor es funktionierte.

1) Aus irgendeinem Grund konnte ich kein Zertifikat mit Passwort importieren. Also habe ich es ohne geschaffen.

2) Beim Importieren des PFX-Zertifikats über IIS wurde immer wieder die Meldung "Eine angegebene Anmeldesitzung existiert nicht" angezeigt, als ich versuchte, ein neues Zertifikat in "Bindungen bearbeiten" anzuwenden. Also habe ich wenig recherchiert und fand diese SO-Antwort nützlich, insbesondere die Antwort von Mike L.

Eine andere Sache, die ich hinzufügen möchte, ist, dass Sie beim Importieren eines Zertifikats daran denken, das PFX-Zertifikat auszuwählen. Die Standardauswahl des Importassistenten ist * .cer, die Sie importieren können (Fehler, den ich gemacht habe), aber dann konnte ich das Zertifikat in IIS-Serverzertifikaten nicht sehen. Als ich genauer hinschaute, fehlte ein kleiner Schlüssel im Symbol. Jetzt habe ich nachgeforscht, dass ich es über den Artikel KB-889651 reparieren konnte . Stellen Sie also sicher, dass Sie .pfx importieren und es funktioniert ohne Reparatur.

Ein weiterer Hinweis: Wenn Sie Vertrauensprobleme mit diesem Zertifikat haben, importieren Sie es ebenfalls in "Trusted Root Certificate Authority".

CrnaStena
quelle

Antworten:

8

Sicher. Das makecertDienstprogramm, das Teil des Windows SDK ist, kann dies tun:

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

Der -aParameter legt den Hash-Algorithmus fest. Dies spuckt eine PVK- und eine DER .cer-Datei aus. Sie können den allgemeinen Namen natürlich auch in einen beliebigen Namen ändern. Ich habe nur localhost als Beispiel verwendet. Sie können diese zu einem PFX kombinieren (was IIS beim Importieren eines Zertifikats bevorzugt verwendet), indem Sie pvk2pfx(ebenfalls Teil des SDK) Folgendes verwenden:

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

Dies nimmt nur die beiden makecertgenerierten Dateien und kombiniert sie zu einer PKCS12 .pfx-Datei.

Mit der resultierenden PFX-Datei würden Sie IIS öffnen und unter Serverzertifikate importieren und dann die Bindungen Ihrer Site ändern, um das neue Zertifikat zu verwenden.

vcsjones
quelle
Ich habe es erstellt, aber wo finde ich cert.cer und out.pfx?
Peter
1
@ Peter es ist was auch immer das Arbeitsverzeichnis der Konsole ist. Sie sehen so etwas wie C:\Path\ToADirectory>in der Eingabeaufforderung. Das ist dein Arbeitsverzeichnis.
vcsjones
Als ich versuchte, out.pfx in iis zu importieren, wurde nach einem Passwort gefragt. Ich gab das Passwort ein, das ich beim Erstellen des Zertifikats mithilfe Ihres Kommentars festgelegt hatte. Aber es ist fehlgeschlagen. Kennen Sie den Grund?
Peter
vcsjones Ich habe das Zertifikat im System installiert und dann das Binind in IIS festgelegt. Wenn ich in Firefox surfe, wird es nicht geöffnet, aber im IE habe ich die Fehleraufforderung fortgesetzt und kann die Website sehen, aber es wird ein Symbol angezeigt, als ob das Zertifikat nicht von vertrauenswürdig ist Zertifizierungsstelle
Peter
1
Ein zu beachtender Punkt ist, dass makecert jetzt veraltet ist. Für Windows 8.1 / Windows Server 2012 R2 und höher können Sie stattdessen den hier beschriebenen Powershell-Befehl verwenden: stackoverflow.com/a/19446469/914490
Mike
6

Ich verwende bei der Arbeit einen gesperrten Windows 7 Enterprise-Computer und kann daher das Windows SDK nicht installieren, um Zugriff darauf zu erhalten makecert. So habe ich mein selbstsigniertes sha256-Zertifikat erstellt (entnommen aus https://core.telegram.org/bots/self-signed ):

  1. Entscheiden Sie, in welchem ​​Verzeichnis Sie Ihr Zertifikat speichern möchten
  2. Erstellen Sie in diesem Verzeichnis eine Textdatei template.txtmit dem folgenden Inhalt:

    [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. Ersetzen Sie {your.domain.com}durch die Adresse, die Sie für den Zugriff auf Ihre Website verwenden, z"CN=localhost"

  4. Öffnen Sie eine Eingabeaufforderung und wechseln Sie in Ihr Zertifikatverzeichnis
  5. Lauf certreq -new template.txt RequestFileOut
  6. Sie müssen die Seriennummer kennen, führen Sie sie aus certutil -store -user my, um einen Speicherauszug mit der Seriennummer zu erhalten
  7. Ersetzen Sie {SERIALNUMBER}durch die Seriennummer im Speicherauszug und {YOURDER}.crtdurch den Namen der Ausgabedatei:certutil -user -store -split my {SERIALNUMBER} {YOURDER}.crt
  8. Ersetzen Sie {YOURDER}.crtdurch den Namen der Eingabedatei und {YOURPEM}.cerdurch den Namen der Ausgabedatei:certutil -encode {YOURDER}.crt {YOURPEM}.cer
  9. Ersetzen Sie {your.domain.com}durch Ihren tatsächlichen (Test-) Domainnamen und {YOURPKCS}.pfxdurch den Namen der Ausgabedatei:certutil -exportpfx -user {your.domain.com} {YOURPKCS}.pfx NoChain

Danach ging ich zu IIS Manager, Sites -> {Site-Name} -> Bindungen ... (unter "Site bearbeiten"). Ich habe dann auf https / 443 geklickt, weil ich es bereits eingerichtet hatte, Bearbeiten ... und das neue Zertifikat aus der Liste ausgewählt.

Firefox hat sich beschwert, dass meine Website ein selbstsigniertes Zertifikat verwendet, also habe ich es nur als Ausnahme hinzugefügt, und voilà! es funktionierte!

CJ Dennis
quelle
Dies ist das beste Beispiel ohne Installation, was auf dem Prod-Server manchmal nicht möglich ist.
hungrigMind
Ich konnte dies auf meiner Windows 7-Box nicht zum Laufen bringen, aber es funktionierte hervorragend auf Server 2012. Als Randnotiz werden {yourpem} .cer und {yourpkcs.pfx} durch die beiden Befehle generiert, in denen sie aufgeführt sind. Ich möchte wahrscheinlich den gleichen Namen wie {yourder} .crt verwenden. Der Einfachheit halber {yourcert} .crt, {yourcert} .cer, {yourcert} .pfx
DaBlue
0

Ja, ich habe auch die Fehler- / Warnmeldung "Eine angegebene Anmeldesitzung existiert nicht" erhalten.

Ich habe nur ein zweites Mal auf OK geklickt und es wurde akzeptiert.

anthonymaw
quelle