IIS 7.0 - SSL-Zertifikat - erneuern oder neu?

13

Eines meiner SSL-Zertifikate (nur einfache Domänenüberprüfung) läuft bald auf einem Windows 2003 IIS 7.0-Server ab.

Ich habe ein besseres Angebot von einem anderen Anbieter erhalten, und die Jungs, die ursprünglich mein Zertifikat ausgestellt haben, möchten keine niedrigeren Preise aushandeln.

Trotzdem kann ich über den Zertifikat-Assistenten in IIS "erneuern" oder "deinstallieren" und anschließend ein neues Zertifikat installieren.

Kann ich die Option "Erneuern" verwenden, um eine Zertifikatsanforderung zu erstellen und diese an den neuen Anbieter weiterzuleiten, oder muss ich mit einer "neuen" Anforderung beginnen? Ist es für den neuen Anbieter von Bedeutung, dass das vorherige Zertifikat von einem anderen Unterzeichner ausgestellt wurde?

Das Problem ist, dass ich den Server (zumindest den gesicherten Teil) nicht stoppen möchte, weil das alte Zertifikat entfernt und eine neue CSR erstellt wurde. Warten Sie, bis das neue Zertifikat installiert ist.

Oder gibt es eine Option, um einen neuen CSR vorzubereiten, ohne das alte Zertifikat zu entfernen?

Sonnig
quelle

Antworten:

7

Sie müssen nur eine temporäre Website mit IIS 6.0 erstellen. Mit IIS 7.0 können Sie mehrere ausstehende Anforderungen gleichzeitig erstellen.

IIS 7.0 weist tatsächlich einen Fehler auf, der dazu führt, dass die Erneuerungsfunktion eine CSR mit einem sehr großen Schlüssel generiert (viel größer als gewünscht). Aus diesem Grund wird empfohlen, eine neue ausstehende Anforderung zu erstellen, anstatt die Option zum Erneuern auszuwählen. Einmal installiert, wechseln Sie einfach die SSL-Bindung auf der Website und Sie haben keine Ausfallzeiten. Auf diese Weise können Sie bei jeder Verlängerung einen neuen Schlüssel generieren, um die Sicherheit zu erhöhen.

Dem Zertifikatsanbieter (CA) ist es egal, ob Sie die neue Option oder die Verlängerungsoption verwenden. Sie können auch eine der beiden Optionen verwenden, unabhängig davon, ob Sie bei derselben Zertifizierungsstelle bleiben oder bei einer neuen bestellen.

Robert
quelle
7

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 Exportableden Wert auf TRUE setzen , wenn Sie Ihren Schlüssel archivieren möchten. Das FriendlyNameist völlig optional und der ExtensionsAbschnitt 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:

  1. Öffnen Sie eine Eingabeaufforderung und wechseln Sie in das Verzeichnis, in dem Sie die obige Datei gespeichert haben.
  2. Lauf certreq -new above.inf request.req
  3. Senden Sie die request.req-Datei an Ihre Zertifizierungsstelle. Sie werden es verarbeiten und genehmigen / ablehnen.
  4. Wenn sie es genehmigen, sollten sie Ihnen Ihren öffentlichen Schlüssel in einer CER-Datei zurückschicken.
  5. 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 FriendlyNameund HashAlgorithmsind nur Server 2008 (und R2). Sie können eine Liste der unterstützten Kryptografieanbieter anzeigen, indem Sie den Befehl ausführen certutil -csplistund 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
Joshua
quelle
Vielen Dank. Wie bereite ich es manuell vor?
Sunny
Ist es für die "Erneuerung" wichtig, dass das Zertifikat von einem neuen Anbieter ausgestellt wird?
Sunny
Soweit ich weiß, erfordert eine Erneuerung dieselbe ausstellende Zertifizierungsstelle, um Ihnen das aktualisierte Zertifikat zu senden, da bei einer Erneuerung derselbe öffentliche und private Schlüssel beibehalten wird. Für eine andere Zertifizierungsstelle muss ein anderer Schlüssel zum Signieren festgelegt werden, sodass sich Ihr öffentliches / privates Schlüsselpaar unterscheidet.
Joshua
Joshua, es meldet dies: Certificate Request Processor: Die Daten sind ungültig. 0x8007000d (WIN32: 13) mycert.inf (HashAlgorithm = "SHA256"). Sind Sie sicher, dass dies funktionieren sollte? In der orig. Artikel, den Sie verlinkt haben, gibt es keine solche Einstellung.
Sunny
Ich habe die HashAlgorithm- und FriendlyName-Einstellungen entfernt (da sie beanstandet wurden) und nein, ich erhalte: Zertifikatanforderungsprozessor: Der Anbietertyp stimmt nicht mit dem registrierten Wert überein. 0x8009001b (-2146893797). Schade.
Sunny
1

OK, um meine eigene Frage teilweise zu beantworten - den Teil des Erstellens / Verwendens eines neuen Zertifikats, ohne das vorhandene zu entfernen (dh ohne den Server anzuhalten), habe ich eine gute Beschreibung auf der Comodo-Website gefunden - im Grunde muss ich eine "temporäre" Website erstellen Erstellen Sie auf dem Server eine neue CSR, senden Sie sie zum Signieren und empfangen und importieren Sie das Zertifikat.

Dann muss ich auf meiner (realen) Hauptwebsite das aktuelle Zertifikat ersetzen und dann das temporäre Zertifikat löschen.

Sonnig
quelle