IIS 8 : meilleure gestion des certificats
Le magasin central de certificats IIS 8 peut simplifier le processus d'utilisation de plusieurs certificats sur plusieurs serveurs.
Jason Helmick
Il est rafraîchissant quand il existe une solution brillamment simple à un problème complexe. C'est juste comment le nouveau magasin de certificat central (CCS) dans IIS 8 empile. Avec les versions antérieures d'IIS, vous pouvez installer des certificats dans une batterie de serveurs Web à l'aide de Windows PowerShell Remoting. Il s'agit d'un processus utile si vous travaillez avec IIS sur les serveurs plus anciens. Si vous êtes un des chanceux qui peuvent mettre à niveau vers IIS 8, puis vous verrez bientôt comment le processus d'utilisation des certificats est un jeu d'enfant.
Le magasin de l'esprit
Le CCS est basé sur un concept vraiment simple. Rangez tous les certificats dans un partage de serveur de fichiers Windows, puis demandez les liaisons de site Web d'utiliser ceux au lieu de certificats installés localement. Non seulement cela réduit-il le chaos de l'installation de certificats sur plusieurs serveurs, elle réduit considérablement la gestion des temps et efforts localisant les certificats qui sont sur le point d'expirer.
La première étape consiste à créer un partage sur un serveur de fichier qui contiendra votre certificat fichiers .pfx. Vous pouvez le faire sur n'importe quel serveur de fichiers, quel que soit le système d'exploitation. Il semble préférable de le faire sur un serveur de fichiers en cluster pour éviter un point de défaillance unique. Vous ne voulez pas perdre l'accès à ces certificats.
Si vous travaillez dans une batterie de serveurs Web, vous avez probablement déjà un serveur de fichiers en cluster — ou du système de fichiers distribués (DFS) — disponible pour votre configuration partagée. Il s'agit d'un endroit idéal pour créer une autre part pour vos certificats. Créer un compte d'utilisateur avec des autorisations de lecture sur le partage et vous êtes prêt.
CCS fonctionne en utilisant le nom d'hôte de la liaison de site Web pour localiser un certificat dans le magasin avec le même nom de fichier exact, plus l'extension .pfx. Par exemple, s'il y a deux sites Web avec hôte noms www.WebBikez.com et www.MyCompany.com, les certificats doivent être nommés :
Remarque Vous devez vous assurer que les caractères génériques certificats (*.Monentreprise.com) utiliser une trait de soulignement pour remplacer le caractère générique (_.MyCompany.com.pfx).
Vous pouvez ajouter les certificats à ce partage chaque fois que vous ajoutez des sites Web. Vous n'avez plus besoin d'installer les certificats sur vos serveurs Web. L'étape suivante consiste à installer et à configurer les CCS sur vos serveurs IIS 8 Web pour pouvoir utiliser ces certificats.
Installer CCS
Le processus d'installation est simple. Vous pouvez faire cela avec les outils de gestion graphique ou Windows PowerShell. Voici le processus d'installation de CCS sur un serveur Web local. La dernière section explique comment effectuer ces tâches sur des serveurs Web distants, y compris Windows Server 2012 Core.
Vous devez installer la fonctionnalité centralisée de Support de certificat SSL sur votre serveur Web avant de continuer. Vous pouvez utiliser les outils graphiques de gestionnaire de serveur ou de la cmdlet Install-WindowsFeature dans Windows PowerShell:
PS> Install-WindowsFeature Web-CertProvider
Lorsque vous avez installé avec succès la nouvelle fonctionnalité, une nouvelle icône apparaîtra dans la section gestion du Gestionnaire des services IIS (voir Figure 1).
Figure 1 icône de la CCS dans la section gestion du Gestionnaire des services IIS .
Cliquez sur l'icône pour ouvrir un formulaire pour configurer CCS (voir Figure 2). Activer le CCS, puis fournissez le partage UNC compte utilisateur avec des privilèges de lecture sur le partage.
La figure 2 vous pouvez configurer graphiquement le magasin de certificats central.
Notez en bas du formulaire, que vous pouvez spécifier un mot de passe de clé privée si vous avez exporté le .pfx avec un. En règle générale, vous pourrait exporter les certificats avec un mot de passe, donc il est rentré dans l'exemple précédent.
Grâce à ces outils graphiques est simple assez si vous avez besoin activer et configurer le CCS sur un seul serveur local. Si vous souhaitez automatiser le processus, vous pouvez également utiliser Windows PowerShell. Lorsque vous installez le CCS de cette façon, il y aura six nouvelles applets de commande ajoutés :
- Clear-WebCentralCertProvider
- Disable-WebCentralCertProvider
- Enable-WebCentralCertProvider
- Get-WebCentralCertProvider
- Jeu-WebCentralCertProvider
- Jeu-WebCentralCertProviderCredential
Les applets de commande sont assez explicites et fichiers d'aide. Voici un exemple d'utilisation de la cmdlet Enable-WebCentralCertProvider pour activer et configurer le CCS sur un serveur Web local :
PS> Enable-WebCentralCertProvider -CertStoreLocation \\serverdc\certstore -UserName company\certuser -Password P@ssw0rd -PrivateKeyPassword P@ssw0rd
Créer des liaisons de site Web
La dernière étape du processus consiste à créer, de modifier ou d'ajouter une nouvelle liaison vers votre site Web qui utilise le CCS (voir Figure 3). Remarque Il y a maintenant une nouvelle option pour sélectionner « Utilisation centralisé Certificate Store. »
La figure 3 lier votre site Web vers le magasin de certificats central est l'étape finale.
Voici un exemple montrant comment utiliser Windows PowerShell pour créer un nouveau site Web avec la liaison SSL correcte. L'astuce est le paramètre –SslFlags de la cmdlet New-site Web. SSLFlags détermine où se trouve le certificat que vous allez utiliser pour la liaison. CCS, vous voulez option deux ou trois, selon que vous êtes l'Indication de nom de serveur (SNI). Voici les options :
- 0 – Certificat ordinaire dans le stockage des certificats Windows
- 1-Certificat SNI
- 2 – SCC
- 3 – Certificat SNI dans CCS
Voici comment créer un nouveau pool d'applications et le site Web à l'aide d'un certificat SNI dans CCS :
PS C:\> New-WebAppPool -Name WebBikez_pool PS C:\> New-Website -Name WebBikez -HostHeader www.WebBikez.com -PhysicalPath c:\inetpub\wwwroot -ApplicationPool webbikez_Pool -Ssl -port 443 -SslFlags 3 -force
Procédez comme suit si vous avez juste besoin d'ajouter une liaison à un site Web existant :
PS C:\> New-WebBinding -Name "WebBikez" -Protocol https -Port 443 -HostHeader www.WebBikez.com –SslFlags 3
Installer CCS sur des serveurs Web distants
Vous pouvez exécuter toutes ces commandes à l'aide de Windows PowerShell Remoting. Il est facile de se connecter et d'installer la fonctionnalité de CCS à des serveurs distants, y compris Windows Server Core de 2012.
Créer une session à distance à l'aide de la cmdlet New-PSSession :
PS C:\> $Sessions=New-PSSession -ComputerName server2,server3
Installer la fonctionnalité de CCS sur les ordinateurs distants :
PS C:\> Invoke-Command -Session $sessions {Install-WindowsFeature Web-CertProvider}
C'est là que ça devient compliqué. La cmdlet Enable-WebCentralCertProvider possède un paramètre — CertStoreLocation — qui accepte un partage de réseau pour le certificat de localisation. Le problème est que la cmdlet tente de vérifier l'emplacement de partage avant il écrit les informations dans le registre.
Dans Windows PowerShell Remoting, cela entraîne un problème de multi-sauts. Vous êtes connecté à un ordinateur distant qui essaie de se connecter à un ordinateur distant. À un certain moment, l'équipe IIS fixera probablement l'applet de commande. Jusqu'à ce qu'ils font, voici un moyen de contourner le problème. Vous pouvez simplement ajouter les entrées dans le Registre manuellement.
Pour activer la CCS :
Invoke-Command -Session $sessions {Set-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\IIS\CentralCertProvider\ -Name Enabled -Value 1}
Pour définir l'emplacement de la part des certificats :
Invoke-Command -Session $sessions {Set-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\IIS\CentralCertProvider\ -Name CertStoreLocation -Value \\ServerDC\CertStore}
Vous ne pouvez pas définir le nom d'utilisateur et le mot de passe directement dans le registre, mais l'applet de commande Set-WebCentralCertProvider se chargera du reste :
Invoke-Command -Session $sessions {Set-WebCentralCertProvider -Password P@ssw0rd -UserName Company\certuser -PrivateKeyPassword P@ssw0rd}
À ce stade, vous pouvez ajouter des liaisons Web pour vos sites Web pour HTTPS à l'aide de Windows PowerShell Remoting, et vous avez terminé. Si vous n'avez pas eu la chance d'essayer IIS 8, peut-être apprendre comment le CCS fonctionne vous donnera une raison de bonnes affaires à jeter un coup d'oeil. C'est juste une des nouvelles fonctionnalités dans IIS 8 que vous devriez envisager d'aller de l'avant.
Jason Helmick est le directeur des technologies de Windows PowerShell Interface formation technique basé à Phoenix, Arizona Il est conférencier, auteur, enseignant et administrateur IIS par inadvertance.