web-dev-qa-db-fra.com

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

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.

Site Bindings

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.

48
p.campbell

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

32
joeqwerty

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.

45
Lindsay Rex

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.

10
Justin Scott

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

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

    netsh http show sslcert
    
  7. Enregistrez le hachage du certificat et l'ID d'application

  8. Supprimer la liaison https sur votre site
  9. À 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.

  1. Supprimez la liaison http de votre site

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é:

  1. Exécutez mmc.exe Depuis le début
  2. Allez dans le menu File et choisissez Add/Remove Snap-in... Ou appuyez sur (Ctrl-M)
  3. Mettez en surbrillance le composant logiciel enfichable 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 enfichables

Dans 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.

4
Zac

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

2
tialen

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']

1
MacGyver

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).

0
Umer Khan