Considérons une machine Win 2008 SP2 avec IIS7. La tâche consiste à appliquer un certificat et un nom d'hôte au seul et unique site de cette machine. Les en-têtes Host du site doivent être abc.123.example.com
La première étape a été d'installer le fichier .pfx dans la boutique personnelle, ce qui a réussi.
IIS7 trouve le certificat comme disponible, mais ne permet pas la saisie d'un nom d'hôte. La zone de texte Nom d'hôte est TOUJOURS désactivée/grisée, même avant de sélectionner mon certificat. J'ai même supprimé la liaison par défaut du port 80.
Question: comment puis-je définir un nom d'hôte pour ce site? Est-ce que ce certificat est un certificat générique? Je comprends que la demande SSL arrive sur le serveur Web et que l'en-tête Host dans le paquet est crypté. Pourquoi alors IIS6 permettrait-il de spécifier l'en-tête Host, mais pas IIS7?
pdate: Le certificat ne fait pas partie du problème. J'ai créé un nouveau site sur la machine et lorsque vous choisissez la liaison https, la zone de texte Nom d'hôte est désactivée.
Vous ne pouvez pas le faire à partir de l'interface utilisateur, vous devez le faire à partir de la ligne de commande. Voici une belle présentation du processus:
http://www.sslshopper.com/article-ssl-Host-headers-in-iis-7.html
Cela fonctionne dans l'interface graphique ...
Assurez-vous simplement que le "nom convivial" du certificat que vous installez est le même que le nom multidomaine que vous avez créé pour le certificat.
c'est à dire. * .companydomain.com
si vous mettez "Nice friendly name" pour * .companydoman.com cert, lors de l'installation du cert dans IIS, il grise la boîte d'en-tête Host name.
Si vous utilisez * .companyname.com comme nom convivial, vous êtes en or.
Boom.
La réponse courte est que chaque IP ne peut avoir qu'un seul certificat, donc la liaison de certificat va s'appliquer quel que soit le nom d'hôte dirigé vers cette adresse IP. La possibilité de spécifier un nom d'hôte impliquerait que vous pouvez avoir plusieurs combinaisons de nom d'hôte et de certificat sur la même adresse IP et le même port (comme vous pouvez le faire avec des entrées non SSL), mais ce n'est pas le cas, donc le champ n'est pas disponible.
L'explication la plus complète est que SSL crypte votre trafic, et une partie de ce trafic provient des en-têtes HTTP envoyés par le navigateur au serveur. L'un de ces en-têtes serait l'en-tête "Host" qui IIS utilise pour déterminer le site à charger avec la demande. Étant donné que le certificat doit être chargé pour établir la connexion sécurisée AVANT les en-têtes de demande sont envoyés, IIS doit sélectionner le certificat uniquement en fonction de l'adresse IP et du numéro de port, en laissant l'en-tête "Host" dans le froid comme facteur pour déterminer le site à charger, afin qu'ils ne vous laissez pas en entrer un.
Voici un article qui décrit le fonctionnement interne de la connexion SSL plus en détail.
La réponse SSLShopper n'a pas fonctionné pour moi car elle a laissé la liaison sans l'en-tête Host, et vous ne pouvez pas supprimer cette liaison sans interrompre la connexion au certificat. Voici la méthode que j'ai utilisée pour le faire fonctionner:
Veuillez noter que cette réponse suppose que votre certificat a déjà été généré, ajouté au magasin de certificats et ajouté à IIS. Cela suppose également que vous ne voulez pas d'autres liaisons à votre site Web que celle de SSL.
Tout d'abord, nous devons recueillir des informations. Nous avons besoin du hachage, de l'ID d'application et du nom d'hôte.
étapes
Ouvrez une invite de commande
netsh http show sslcert
Enregistrez le hachage du certificat et l'ID d'application
À l'invite de commande:
netsh http add sslcert ipport=0.0.0.0:443 certstorename=my certhash=<put Certificate Hash here> appid={<put Application ID here>}
appcmd set site /site.name:"<put site name here>" /+bindings.[protocol='https',bindingInformation='*:443:<put Host name here>']
Remarque: Appcmd.exe se trouve dans C:\Windows\System32\inetsrv. Vous devrez peut-être être dans ce dossier pour que cette commande fonctionne.
La réponse acceptée ici est déroutante et je ne pense pas qu'elle soit correcte pour la question. Ce ne devrait pas être la réponse acceptée.
Le problème
Vous avez un SSL générique tel que *.ipsum.com
Et le certificat est installé mais vous ne pouvez pas choisir un nom d'hôte pour le site dans IIS lorsque vous essayez d'ajouter une liaison HTTPS car la zone de texte est grisée.
La solution
Votre SSL générique peut être utilisé avec n'importe quel sous-domaine, il vous suffit de assurez-vous vous démarrez le nom convivial du certificat avec *
. Je préfère utiliser le même nom convivial que le domaine générique, par exemple *.ipsum.com
Mais vous pouvez l'appeler comme tout ce qui est avec l'astérisque: *foo
J'ai donné à mon certificat le mauvais nom convivial, aidez-moi!
Depuis Windows 8 ou Server 2012, vous pouvez taper certlm.msc
Dans le menu Démarrer pour gérer les certificats pour la machine locale. Sur les versions précédentes de Windows, vous devrez faire quelque chose d'un peu plus compliqué:
mmc.exe
Depuis le débutFile
et choisissez Add/Remove Snap-in...
Ou appuyez sur (Ctrl-M)
Certificates
et appuyez sur Add >
Puis choisissez Computer Account
Suivi de Local Computer
Dans les boîtes de dialogue suivantes, puis appuyez sur Finish
suivi de OK
pour fermer la fenêtre Composants logiciels enfichablesDans la fenêtre principale, développez Certificates (Local Computer)
puis Personal
puis Certificates
et vous pourrez cliquer avec le bouton droit sur le certificat, appuyez sur Properties
où vous pourrez mettre à jour le nom amical.
Fermez et ouvrez IIS Manager et vous pouvez ensuite définir votre nom d'hôte.
En fait, vous pouvez ajouter un en-tête Host via l'interface graphique, mais cela dépend de la façon dont le certificat est nommé ... si je donne un nom convivial de * .xyz.com à mon certificat générique, et sélectionnez ce certificat, alors je suis capable d'utiliser l'interface graphique. si le nom convivial est quelque chose comme xyzwildcard, et je le choisis, alors il grise le champ de l'hostheader ...
Bizarre bizarre
Certaines machines ne vous permettent pas de modifier le nom d'hôte si le protocole est modifié en https ou après l'ajout d'un certificat SSL. IIS peut parfois être grincheux.
Cette commande Windows créera une nouvelle liaison avec le protocole "https", sur le port "443", le nom d'hôte "subdomain.domain.com", le nom du site "nom du site". Modifiez ces valeurs (entre guillemets) pour répondre à vos besoins. Vous devrez ensuite supprimer l'ancienne liaison si elle utilise le port 443.
Run Windows Command Prompt as Administrator
C:> cd C:\Windows\System32\inetsrv
C:\Windows\System32\inetsrv> appcmd set site /site.name:"site_name" /+bindings.[protocol='https',bindingInformation='*:443:subdomain.domain.com']
Le nom d'hôte ne peut être ajouté que lorsque le nom du certificat sélectionné sera comme le nom d'hôte * .xyz.com et vous pouvez renommer le nom convivial du certificat en * .xyz.com à partir de mmc (composant logiciel enfichable).