Durch Erneuern eines Zertifikats können Sie denselben öffentlichen und privaten Schlüssel beibehalten, während Sie das Ablaufdatum für das Zertifikat aktualisieren. Dies hat den Vorteil, dass Sie den Fingerabdruck auf einem Router oder etwas anderem speichern müssen. Ich glaube, dass dieselbe ausstellende Zertifizierungsstelle für die Erneuerung einer Anforderung erforderlich ist, sodass es möglicherweise einfacher ist, eine neue Anforderung manuell zu generieren.
So generieren Sie eine neue Anforderung, ohne IIS in die Luft zu jagen
Sie können die Zertifikatsanforderung manuell erstellen und übermitteln. Sobald Sie das neue Zertifikat erhalten haben, können Sie einfach das von IIS7 gesuchte Zertifikat wechseln. So erstellen Sie ein Webserver-SSL-Zertifikat manuell .
Der einfache Kern des Prozesses ist, dass Sie eine inf-Datei mit den erforderlichen Informationen erstellen und ausführen certreq -new file.inf file.req
. Sobald Sie die Anforderungsdatei haben, können Sie diese an die Zertifizierungsstelle senden, für die Sie das Zertifikat ausstellen möchten. Akzeptieren Sie dann den öffentlichen Schlüssel, den Sie mit dem Befehl erhaltencertreq -accept file-from-ca.req
Beispiel request.inf
[Version]
Signature="$Windows NT$"
[NewRequest]
Subject = "CN=fully.qualified.domain.name, OU=Organizational Unit, O=Company, L=City, S=State, C=Country"
KeySpec = 1
KeyLength = 2048
HashAlgorithm = SHA256
Exportable = FALSE
MachineKeySet = TRUE
SMIME = FALSE
PrivateKeyArchive = FALSE
UserProtected = FALSE
UseExistingKeySet = FALSE
RequestType = PKCS10
KeyUsage = 0xa0
ProviderName = "Microsoft RSA SChannel Cryptographic Provider"
FriendlyName = ""
[EnhancedKeyUsageExtension]
OID=1.3.6.1.5.5.7.3.1 ; Server Authentication
[RequestAttributes]
CertificateTemplate = WebServer
[Extensions]
2.5.29.17 = "{text}"
_continue_ = "DNS=&"
_continue_ = "DNS="
Das obige Beispiel inf ist eines, das ich intern für meine eigene Zertifizierungsstelle verwende, es kann jedoch für die meisten Umgebungen angepasst werden. Sie können Exportable
den Wert auf TRUE setzen , wenn Sie Ihren Schlüssel archivieren möchten. Das FriendlyName
ist völlig optional und der Extensions
Abschnitt dient zur Verwendung alternativer DNS-Namen (Subject Alternative Names).
Ein Beispiel für einen SAN-Eintrag wäre:
[Extensions]
2.5.29.17 = "{text}"
_continue_ = "DNS=example.com&"
_continue_ = "DNS=www.example.com&"
_continue_ = "DNS=secure.example.com"
Das würde es Ihnen ermöglichen, dasselbe Zertifikat mit den drei oben genannten Sites zu verwenden, ohne sich darüber zu beschweren, dass ein Namenskonflikt vorliegt (in modernen Browsern - ich glaube, IE6 versteht das nicht). Es ist wichtig, dass Sie den vollständig qualifizierten Domänennamen (den CN der Betreffzeile) in das SAN aufnehmen, wenn Sie dies einrichten. Sie können den Erweiterungsbereich auch vollständig entfernen, wenn Sie nicht mehrere Domänennamen benötigen (einige Zertifizierungsstellen unterstützen dies möglicherweise auch nicht).
Der Prozess
Sobald Sie die oben genannten Informationen gespeichert haben (ich weiß, dass es eine Menge ist). Folge diesen Schritten:
- Öffnen Sie eine Eingabeaufforderung und wechseln Sie in das Verzeichnis, in dem Sie die obige Datei gespeichert haben.
- Lauf
certreq -new above.inf request.req
- Senden Sie die request.req-Datei an Ihre Zertifizierungsstelle. Sie werden es verarbeiten und genehmigen / ablehnen.
- Wenn sie es genehmigen, sollten sie Ihnen Ihren öffentlichen Schlüssel in einer CER-Datei zurückschicken.
- Führen Sie aus
certreq -accept file-from-ca.cer
, um die Einrichtung des Schlüssels abzuschließen.
Viel Glück!
Bearbeiten
Die vollständige Syntax für certreq und die inf-Datei finden Sie in Anhang 3: Certreq.exe-Syntax (Windows Server 2003 SP1) . Das FriendlyName
und HashAlgorithm
sind nur Server 2008 (und R2). Sie können eine Liste der unterstützten Kryptografieanbieter anzeigen, indem Sie den Befehl ausführen certutil -csplist
und die Ausgabe anzeigen . In einer aktuellen Windows 2003 SP2-Box ist der "Microsoft RSA SChannel Cryptographic Provider" als verfügbarer Anbieter aufgeführt. Stellen Sie daher sicher, dass in Ihrer Datei die Anführungszeichen ordnungsgemäß festgelegt sind und sich der Eintrag nur in einer Zeile befindet (kein Zeilenumbruch oder mehrere Zeilen).
Sie können auch ProviderName in ProviderType ändern und die durch die Ausgabe von angegebene Nummer verwenden certreq -csplist
.
In diesem Fall erhalte ich folgende Ausgabe:
Provider Name: Microsoft RSA SChannel Cryptographic Provider
Provider Type: 12
Also kann ich entweder verwenden
ProvderName = "Microsoft RSA SChannel Cryptographic Provider"
oder
ProviderType = 12