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 Exportable
sur VRAI si vous souhaitez pouvoir archiver votre clé. Le FriendlyName
est entièrement facultatif et la Extensions
section 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:
- Ouvrez une invite de commande et accédez au répertoire dans lequel vous avez enregistré les informations ci-dessus.
- Courir
certreq -new above.inf request.req
- Soumettez le fichier request.req à votre autorité de certification. Ils le traiteront et l'approuveront / le déclineront.
- Lorsqu'ils l'approuvent, ils doivent vous renvoyer votre clé publique dans un fichier .cer.
- Exécutez
certreq -accept file-from-ca.cer
pour 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 FriendlyName
et HashAlgorithm
sont Server 2008 (et R2) uniquement. Vous pouvez afficher une liste des fournisseurs de chiffrement pris en charge en exécutant la commande certutil -csplist
et 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