IIS 7.0 - Certificat SSL - renouvelé ou nouveau?

13

Un de mes certificats SSL (simple vérification de domaine uniquement) est sur le point d'expirer sur le serveur Windows 2003 IIS 7.0.

J'ai obtenu une meilleure offre d'un autre fournisseur et les gars qui ont initialement émis mon certificat ne veulent pas négocier des prix plus bas.

Quoi qu'il en soit - en passant par l'assistant de certificat dans IIS, j'ai la possibilité de «renouveler» ou de «désinstaller», puis d'installer un nouveau certificat.

Alors - puis-je utiliser l'option "renouveler" pour créer une demande de certificat et la transmettre au nouveau fournisseur, ou dois-je commencer par une "nouvelle" demande? Sera-t-il important pour le nouveau fournisseur que le certificat précédent ait été délivré par un autre signataire?

Le problème est que je ne veux pas arrêter le serveur (la partie sécurisée au moins) à cause de la suppression de l'ancien certificat et de la création d'un nouveau CSR, et attendre que le nouveau certificat soit installé.

Ou, existe-t-il une option pour préparer un nouveau CSR sans supprimer l'ancien certificat?

Ensoleillé
la source

Réponses:

7

Il vous suffit de créer un site Web temporaire avec IIS 6.0. IIS 7.0 vous permet de créer plusieurs demandes en attente à la fois.

IIS 7.0 a en fait un bogue qui provoque la fonction de renouvellement pour générer un CSR avec une très grande clé (beaucoup plus grande que vous le souhaitez). Pour cette raison, il est recommandé de créer une nouvelle demande en attente au lieu de sélectionner l'option de renouvellement. Une fois installé, vous changez simplement la liaison SSL sur le site Web et vous n'aurez aucun temps d'arrêt. Cela vous permet également de générer une nouvelle clé à chaque renouvellement, ce qui augmente la sécurité.

Le fournisseur de certificats (CA) ne se soucie pas si vous utilisez la nouvelle option ou l'option de renouvellement et vous pouvez utiliser l'une ou l'autre option si vous restez avec la même autorité de certification ou si vous commandez auprès d'une nouvelle.

Robert
la source
7

Le renouvellement d'un certificat vous permet de conserver la même clé publique et privée tout en mettant à jour la date d'expiration du certificat. L'avantage est que vous deviez stocker l'empreinte du pouce sur un routeur ou quelque chose. Je crois que la même autorité de certification émettrice est requise pour renouveler une demande, il peut donc être plus simple de générer une nouvelle demande à la main.

Pour générer une nouvelle demande sans faire exploser IIS

Vous pouvez créer la demande de certificat manuellement et l'envoyer. Une fois que vous avez obtenu le nouveau certificat, vous pouvez simplement changer le certificat que IIS7 recherche. Comment créer un certificat SSL de serveur Web manuellement .

L'essentiel du processus est que vous créerez un fichier inf avec les informations requises, exécutez certreq -new file.inf file.req. Une fois que vous avez le fichier de demande, vous pouvez le soumettre à l'autorité de certification que vous souhaitez émettre votre certificat, puis acceptez la clé publique qu'ils vous envoient avec la commandecertreq -accept file-from-ca.req

Exemple 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="

L'exemple ci-dessus inf est celui que j'utilise en interne pour ma propre autorité de certification, mais peut être adapté pour fonctionner dans la plupart des environnements. Vous pouvez définir Exportablesur VRAI si vous souhaitez pouvoir archiver votre clé. Le FriendlyNameest entièrement facultatif et la Extensionssection est destinée à l'utilisation d'autres noms DNS (Subject Alternative Names).

Un exemple d'entrée SAN serait:

[Extensions]
2.5.29.17 = "{text}"
_continue_ = "DNS=example.com&"
_continue_ = "DNS=www.example.com&"
_continue_ = "DNS=secure.example.com"

Cela vous permettrait d'utiliser le même certificat avec les trois sites ci-dessus sans se plaindre d'une incompatibilité de nom (sur les navigateurs modernes - je ne pense pas qu'IE6 le comprenne). Il est important d'inclure le nom de domaine complet (le CN de la ligne d'objet) dans le SAN si vous le configurez. Vous pouvez également supprimer complètement la zone d'extensions si vous n'avez pas besoin de plusieurs noms de domaine (certaines autorités de certification peuvent également ne pas la prendre en charge).

Le processus

Une fois que vous avez enregistré les informations ci-dessus (je sais que c'est beaucoup). Suivez ces étapes:

  1. Ouvrez une invite de commande et accédez au répertoire dans lequel vous avez enregistré les informations ci-dessus.
  2. Courir certreq -new above.inf request.req
  3. Soumettez le fichier request.req à votre autorité de certification. Ils le traiteront et l'approuveront / le déclineront.
  4. Lorsqu'ils l'approuvent, ils doivent vous renvoyer votre clé publique dans un fichier .cer.
  5. Exécutez certreq -accept file-from-ca.cerpour terminer la configuration de la clé.

Bonne chance!

Éditer

La syntaxe complète de certreq et le fichier inf se trouvent à l' annexe 3: Syntaxe Certreq.exe (Windows Server 2003 SP1) . Le FriendlyNameet HashAlgorithmsont Server 2008 (et R2) uniquement. Vous pouvez afficher une liste des fournisseurs de chiffrement pris en charge en exécutant la commande certutil -csplistet en consultant la sortie. Une boîte Windows 2003 SP2 actuelle a le «fournisseur cryptographique Microsoft RSA SChannel» répertorié en tant que fournisseur disponible.

Vous pouvez également remplacer ProviderName par ProviderType et utiliser le nombre fourni par la sortie de certreq -csplist.

Dans ce cas, j'obtiens la sortie suivante:

Provider Name: Microsoft RSA SChannel Cryptographic Provider
Provider Type: 12

Je peux donc utiliser

ProvderName = "Microsoft RSA SChannel Cryptographic Provider"

ou

ProviderType = 12
Joshua
la source
Merci. Comment le préparer manuellement?
Sunny
Aussi - toujours la question en suspens - est-ce important pour le "renouvellement" que le certificat soit délivré par un nouveau fournisseur?
Sunny
Pour autant que je sache, un renouvellement nécessite que la même autorité de certification émettrice vous envoie le certificat actualisé, car un renouvellement conserve la même clé publique et privée. Une autre autorité de certification aura un ensemble de clés différent pour se connecter, et votre paire de clés publique / privée sera donc différente.
Joshua
Joshua, il signale ceci: Processeur de demande de certificat: les données ne sont pas valides. 0x8007000d (WIN32: 13) mycert.inf (HashAlgorithm = "SHA256"). Êtes-vous sûr que cela devrait fonctionner? Dans l'orig. article auquel vous avez lié, il n'y a pas un tel paramètre.
Sunny
J'ai supprimé les paramètres HashAlgorithm et FriendlyName (car il se plaignait d'eux) et non, je reçois: Processeur de demande de certificat: le type de fournisseur ne correspond pas à la valeur enregistrée. 0x8009001b (-2146893797). Dommage.
Sunny
1

OK, pour répondre partiellement à ma propre question - la partie de la création / utilisation d'un nouveau certificat sans supprimer celui existant (c'est-à-dire sans arrêter le serveur), j'ai trouvé une bonne description sur le site Web de Comodo - fondamentalement, je dois créer un site Web "temporaire" sur le serveur et utilisez-le pour créer un nouveau CSR, l'envoyer pour signature, recevoir et importer le certificat.

Ensuite, sur mon site principal (réel), je dois remplacer le certificat actuel, puis supprimer celui temporaire.

Ensoleillé
la source