IIS7: impossible de définir le nom d'hôte sur le site avec le cert SSL et le port 443


47

Envisagez 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 d'hôtes du site doivent êtreabc.123.example.com

La première étape a été l’installation du fichier .pfx dans le magasin personnel, qui a abouti.

IIS7 trouve le certificat comme disponible, mais n'autorise pas la saisie d'un nom d'hôte. La zone de texte du 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.

Liaisons de site

Question: comment puis-je définir un nom d'hôte pour ce site? Est-ce une question de savoir si ce cert est un cert wildcard? Je comprends que la demande SSL arrive sur le serveur Web et que l’en-tête de l’hôte dans le paquet est crypté. Pourquoi alors IIS6 autoriserait-il la spécification de l'en-tête d'hôte, mais pas IIS7?

Mise à jour: Le certificat ne fait pas partie du problème. J'ai créé un nouveau site sur la machine et lors du choix de la liaison https, la zone de texte du nom d'hôte est désactivée.

Réponses:


32

Vous ne pouvez pas le faire depuis l'interface utilisateur, vous devez le faire depuis la ligne de commande. Voici une belle promenade à travers le processus:

http://www.sslshopper.com/article-ssl-host-headers-in-iis-7.html


33
astuce pratique, donnez au cert un nom convivial commençant par '*', IIS ne grise pas la zone d'en-tête de l'hôte: blog.armgasys.com/?p=80
russau

1
Je sais que c'est vieux et que c'est seulement dans un commentaire, mais cette astuce pratique m'a évité une certaine frustration. Je vous remercie!
bpursley

45

Sa fonctionne dans l'interface graphique ...

Assurez-vous simplement que le 'nom convivial' du cert que vous installez est le même que le nom de domaine multiple que vous avez créé pour le cert.

c'est à dire. * .societedomaine.com

si vous inscrivez 'Nice friendly name' pour * .companydoman.com cert, lors de l'installation du cert dans IIS, la zone d'en-tête du nom d'hôte sera grisée.

Si vous utilisez * .nomentreprise.com comme nom convivial, vous êtes en or.

Boom.


14
Merci pour ce conseil! Si quelqu'un d'autre ne peut pas renommer un certificat d'IIS (n'importe qui?), Vous pouvez renommer le certificat dans le composant logiciel enfichable MMC pour les certificats. Il suffit de charger la console MMC, d’ajouter un composant logiciel enfichable Certificats, puis de sélectionner Compte ordinateur, Ordinateur local. Une fois que vous avez chargé le composant logiciel enfichable Certificats, vous pouvez accéder à Certificats (ordinateur local)> Personnel> Certificats et cliquer avec le bouton droit de la souris pour sélectionner Propriétés sur votre certificat. Modifiez le champ Nom convivial en * .votresite.com et rechargez le composant logiciel enfichable du gestionnaire IIS
Garrett

4
Le nom convivial ne semble avoir besoin que de commencer par "*" mais peut contenir le nom de votre choix par la suite. Dans mon cas, j’avais un certificat valide pour plusieurs domaines qui n’avait pas de racine commune autre que * .com, ce qui me semblait étrange. Alors, j'ai fini par l'appeler * -my-descriptive-name-here. Et merci @ Garrett pour le conseil renommer!
wojtow

C'est la vraie réponse. Nice
Joe Phillips

@ Garrett Est-ce que cela signifie que si j'ai utilisé un nom convivial tel que "Mon domaine SSL", les choses continueront de fonctionner, même si le champ du nom d'hôte est vide. Cela m'a vraiment fait peur quand j'ai perdu mes noms d'hôtes, mais mes 4 sous-domaines génériques semblent bien fonctionner avec le SSL réédité? Clairement, l'utilisation de '* .mydomain.com' comme nom convivial vous permet simplement de voir le nom de l'hôte, mais sous le capot, les deux options devraient fonctionner. Sinon, IIS devrait nous indiquer explicitement d'utiliser un nom de domaine qualifié et non un nom convivial?
Charles Robertson le

10

La réponse courte est que chaque IP ne peut avoir qu'un seul certificat lié. La liaison de certificat va donc s'appliquer quel que soit le nom d'hôte dirigé vers cette adresse IP. Pouvoir spécifier un nom d'hôte impliquerait que vous puissiez avoir plusieurs combinaisons de nom d'hôte et de certificat sur la même adresse IP et le même port (comme vous le pouvez avec des entrées non SSL), mais ce n'est pas le cas, le champ n'est donc pas disponible.

L'explication la plus complète est que SSL chiffre votre trafic, et que les en-têtes HTTP envoyés par le navigateur au serveur constituent une partie de ce trafic. L'un de ces en-têtes est l'en-tête "Host" qu'IIS utilise pour déterminer le site à charger avec la demande. Comme le certificat doit être chargé pour établir la connexion sécurisée AVANT que les en-têtes de requête soient envoyés, IIS doit sélectionner le certificat uniquement en fonction de l'adresse IP et du numéro de port, sans tenir compte de l'en-tête "Host", ce qui permet de déterminer quel site charger, pour ne pas vous laisser entrer un.

Voici un article qui décrit en détail le fonctionnement interne de la connexion SSL .


Merci pour cette réponse, Justin. Je ne comprends toujours pas pourquoi IIS7 ne me permet pas de spécifier un en-tête d'hôte, même lorsque je sélectionne l'une des adresses IP de la liste. IIS6 fait sans aucun problème. Comme mentionné, c’est le seul et unique site de la machine.
p.campbell

2
Les en-têtes d'hôtes peuvent fonctionner avec un certificat générique, ou un certificat "UC" multi-domaines: sslshopper.com/unified-communications-uc-ssl-certificates.html . Dans ce cas, le serveur n'a qu'un seul certificat pour servir même s'il y a plusieurs noms d'hôte.
russau

Explication très claire. +1
Dan Solovay

7

La réponse de SSLShopper ne fonctionnait pas pour moi car elle laissait la liaison sans en-tête d'hôte et vous ne pouviez pas supprimer cette liaison sans rompre la connexion au certificat. Voici la méthode que j'ai utilisée pour le faire fonctionner:

Notez que cette réponse suppose que votre certificat a déjà été généré, ajouté au magasin de certificats et à IIS. Cela suppose également que vous ne voulez aucune autre liaison avec votre site Web en dehors de celle SSL.

Premièrement, nous devons collecter des informations. Nous avons besoin du hachage, de l'ID d'application et du nom d'hôte.

Pas

  1. Ouvrez IIS, sélectionnez votre serveur et double-cliquez sur "Certificats de serveur" dans la section inférieure. Notez l'adresse "Emis à". Ceci est notre nom d'hôte. Sauvegarde ça.
  2. Sélectionnez votre site
  3. Liez votre site au port 80 en utilisant le protocole http
  4. Supprimer toutes les autres liaisons
  5. Liez votre site au port 443 en utilisant le protocole https
  6. Ouvrir une invite de commande

    netsh http show sslcert
    
  7. Enregistrer le hachage de certificat et l'ID d'application

  8. Supprimer la liaison https sur votre site
  9. A 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 \ insetsrv. Vous devrez peut-être être dans ce dossier pour que cette commande fonctionne.

  1. Supprimer la liaison http de votre site

Merci! Cela m'a enfin aidé à faire fonctionner mon site sous HTTPS. J'ai corrigé une faute de frappe dans l'une des commandes, mais je devais ajouter l'en-tête Steps pour dépasser la longueur minimale requise. N'hésitez pas à supprimer cela - votre réponse d'origine est facile à suivre. À votre santé!
potatopeelings

Cela a fonctionné pour moi avec un certificat avec 6 SAN (pas un certificat générique) avec une légère variation car j'avais plusieurs sites. Je devais faire les étapes 1 à 7 une fois. L'étape 8 devait être effectuée sur chaque site. La première commande de l'étape 9 devait être effectuée une fois et la deuxième commande de l'étape 9 devait être effectuée une fois par site.
Steve Kaye

4

La réponse acceptée ici est déroutante et je ne pense pas que cela soit correct pour la question. Cela ne devrait pas être la réponse acceptée.

Le problème

Vous avez un SSL générique tel que *.ipsum.comet 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 vous assurer de bien démarrer le nom convivial du certificat *. Je préfère utiliser le même nom convivial que le domaine générique, par exemple, *.ipsum.commais vous pouvez l'appeler comme tout ce qui ressemble à l'astérisque:*foo

J'ai donné à mon certificat le mauvais nom, aidez-moi!

Depuis Windows 8 ou Server 2012, vous pouvez taper certlm.mscdans 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 de légèrement plus compliqué:

  1. Courir mmc.exedu début
  2. Aller au Filemenu et choisir Add/Remove Snap-in...ou frapper(Ctrl-M)
  3. Mettez en surbrillance le Certificatescomposant logiciel enfichable, appuyez sur, Add >puis choisissez Computer Accountsuivi Local Computerdans les dialogues suivants, puis appuyez sur, Finishpuis sur OKpour fermer la fenêtre des composants logiciels enfichables.

Dans la fenêtre principale, développez Certificates (Local Computer)puis Personalensuite Certificateset vous serez en mesure de clic droit sur le certificat, appuyez sur Propertiesoù vous pouvez mettre à jour le nom convivial.

Fermez et ouvrez le Gestionnaire des services Internet et vous pourrez ensuite définir votre nom d’hôte.


1
Ça a fait l'affaire!
Kreker

1
@ Zac Génial. Impressionnant. Impressionnant. Bien que je ne pense pas que le fait que le champ du nom d’hôte soit vide soit important, cela m’a donné plus de tranquillité d’esprit. Veuillez garder à l'esprit que je remettais mon certificat. Donc, mon nom d'hôte était déjà dans le champ du nom d'hôte avant qu'il ne soit vide. Mon SSL générique semblait fonctionner avec un nom convivial ou un nom de type. * Mydomain.com. Je pense que IIS conserve un enregistrement interne du nom d'hôte, une fois que le champ du nom d'hôte est vide. J'ai pensé que je devrais en parler, au cas où les gens paniqueraient!
Charles Robertson le

1
@ Zac Oh. Et cette solution fonctionne sur des serveurs de dinosaures comme Windows 2008R2 ...
Charles Robertson

@CharlesRobertson très heureux d'avoir aidé cela, et merci d'avoir ajouté cette information supplémentaire!
Zac

2

En fait, vous pouvez ajouter un en-tête d’hôte via l’interface graphique, mais cela dépend de la manière dont le certificat est nommé. capable d'utiliser le gui. si le nom convivial ressemble à xyzwildcard et que je le choisis, alors le champ hostheader est grisé ...

Bizarre bizarre


1

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 être parfois grincheux.

Cette commande Windows créera une nouvelle liaison avec le protocole "https", sur le port "443", nom d'hôte "sous-domaine.domaine.com", nom de site "nom de site". Modifiez ces valeurs (entre guillemets) pour répondre à vos exigences. 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']


0

Le nom d'hôte ne peut être ajouté que lorsque le nom convivial du certificat sélectionné sera le même que le nom d'hôte * .xyz.com et que vous pouvez renommer le nom convivial du certificat en * .xyz.com à partir de mmc (composant logiciel enfichable).


-1

Je pense que cet article de la Base de connaissances éclaircira un peu la question. En résumé, les en-têtes d’hôte HTTP 1.1 ne sont pas pris en charge lorsque vous utilisez SSL.

Ce que vous souhaiterez probablement accomplir est d'utiliser la clé de métabase SecureBindings. Par exemple, cscript.exe adsutil.vbs défini / w3svc / websiteID / SecureBindings "ip.ip.ip.ip: 443: abc.123.mysite.com


Ne s'applique pas à IIS 7.
davidcl

c'est étrange puisque ça a marché quand on l'a fait ...
Jim B

-1

Pourquoi MS retire-t-il cela de l'interface graphique me dépasse, car si vous avez une application ASP.NET qui utilise des fichiers de licence (licx), votre site ne fonctionnera pas car il apparaît sous la forme d'une adresse IP au lieu d'un nom de domaine . Ils doivent cesser d'ASSUMER à chaque nouvelle version de leur logiciel - les informaticiens n'ont pas besoin d'être surveillés par Microsoft! Décidément!


-2
  1. J'ai créé un certificat auto-signé avec * .testcompany.com, j'ai sélectionné le nouveau créé (en commençant par *) dans la liste déroulante Modifier le certificat SSL de liaison, la zone de texte Nom de l'hôte est activée, j'ai créé le nom d'hôte sous la forme 'webapi.b2c .com ',

  2. J'ai mis à jour le fichier hosts dans C: \ Windows \ System32 \ drivers \ etc 127.0.0.1 webapi.b2c.com

Maintenant, je peux naviguer sur le site en tant que ' https://webapp.b2c.com/ '

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.