IIS7:SSL証明書とポート443を使用してサイトにホスト名を設定できません


47

IIS7を搭載したWin 2008 SP2マシンを検討してください。タスクは、このマシン上の唯一のサイトに証明書とホスト名を適用することです。サイトのホストヘッダーはabc.123.example.com

最初のステップは、.pfxをパーソナルストアにインストールすることでしたが、成功しました。

IIS7は、証明書が利用可能であると判断しますが、ホスト名の入力を許可しません。ホスト名のテキストボックスは、証明書を選択する前でも常に無効/グレーアウトされています。デフォルトのポート80バインディングも削除しました。

サイトバインディング

質問:このサイトのホスト名を設定するにはどうすればよいですか?この証明書がワイルドカード証明書であることは問題ですか?SSL要求がWebサーバーに送信され、パケットのホストヘッダーが暗号化されることを理解しています。なぜIIS6ではホストヘッダーを指定できますが、IIS7では指定できませんか?

更新:証明書は問題の一部ではありません。マシン上に新しいサイトを作成しました。httpsバインディングを選択すると、ホスト名のテキストボックスが無効になります。

回答:


32

UIから実行することはできません。コマンドラインから実行する必要があります。以下に、プロセスを詳しく説明します。

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


33
:便利なトリックは、IISがホストヘッダーボックスグレー表示にしません「*」で始まる証明書にフレンドリ名を与えるblog.armgasys.com/?p=80
russau

1
私はこれが古いことを知っています、そして、それはコメントにあるだけですが、この便利なトリックは私にいくらかのフラストレーションを救いました。ありがとうございました!
bpursley

45

そのGUIで動作します...

インストールする証明書の「フレンドリ名」が、証明書用に作成したマルチドメイン名と同じであることを確認してください。

すなわち。* .companydomain.com

* .companydoman.com証明書に「わかりやすい名前」を入力すると、IISに証明書をインストールするときに、ホスト名ヘッダーボックスがグレー表示されます。

* .companyname.comをフレンドリ名として使用すると、黄金色になります。

ブーム。


14
このヒントをありがとう!他の誰かがIISの証明書の名前を変更できない場合(誰かできますか?)、証明書のMMCスナップインで証明書の名前を変更できます。MMCをロードし、証明書スナップインを追加して、コンピューターアカウント、ローカルコンピューターを選択します。証明書スナップインを読み込んだら、[証明書(ローカルコンピューター)]> [個人]> [証明書]を参照し、右クリックして証明書の[プロパティ]を選択します。* .yoursite.comにフレンドリ名フィールドを変更し、IISマネージャをリロードスナップイン
ギャレット

4
フレンドリ名は「*」で始まる必要があるように見えますが、その後に必要な他の名前を含めることができます。私の場合、*。com以外の共通のルートを持たないいくつかの異なるドメインに対して有効な証明書があり、フレンドリ名が奇妙に思えたのでそれを与えました。そのため、代わりに* -my-descriptive-name-hereと呼びました。名前変更のヒントをありがとう@Garrett!
wojtow

これが本当の答えです。ニース
ジョーフィリップス

@Garrettこれは、「My Domain SSL」などのわかりやすい名前を使用した場合、ホスト名フィールドが空白であっても機能することを意味しますか。ホスト名を失ったとき、本当にびっくりしましたが、私の4つのワイルドカードサブドメインは、再発行されたSSLで正常に動作するようです。わかりやすい名前として「* .mydomain.com」を使用すると、ホスト名が表示されますが、内部では両方のオプションが機能します。それ以外の場合、IISはフレンドリ名ではなく修飾ドメイン名を使用するように明示的に指示する必要がありますか?
チャールズロバートソン

10

簡単な答えは、各IPにバインドできる証明書は1つだけであるため、そのIPアドレスに送信されるホスト名に関係なく、証明書のバインドが適用されるということです。ホスト名を指定できるということは、同じIPアドレスとポートで複数のホスト名と証明書の組み合わせを使用できることを意味します(非SSLエントリの場合と同様)が、そうではないため、フィールドは使用できません。

より完全な説明は、SSLがトラフィックを暗号化し、そのトラフィックの一部がブラウザからサーバーに送信されるHTTPヘッダーであるということです。これらのヘッダーの1つは、IISが要求でどのサイトをロードするかを決定するために使用する「ホスト」ヘッダーです。リクエストヘッダーが送信される前に、セキュリティで保護された接続を確立するために証明書を読み込む必要があるため、IISはIPアドレスとポート番号のみに基づいて証明書を選択する必要があります。どのサイトをロードするのか、だからあなたはそれを入力させない。

SSL接続の内部動作をより詳細に概説する記事があります。


この答えをありがとう、ジャスティン。リストでIPアドレスの1つを選択しても、IIS7がホストヘッダーを指定できない理由はまだわかりません。IIS6は問題なく機能します。前述のように、これはマシン上の唯一のサイトです。
p.campbell

2
ホストヘッダーは、ワイルドカード証明書またはマルチドメイン「UC」証明書で動作できます:sslshopper.com/unified-communications-uc-ssl-certificates.html この場合、サーバーには複数のホスト名があっても提供する証明書が1つしかありません。
russau

非常に明確な説明。+1
ダンソロバイ

7

SSLShopperの回答は、ホストヘッダーなしでバインディングを残したため、私にとってはうまくいきませんでした。また、証明書への接続を切断せずにそのバインディングを削除することはできませんでした。これが機能するために使用した方法は次のとおりです。

この回答は、証明書が既に生成され、証明書ストアに追加され、IISに追加されていることを前提としていることに注意してください。また、SSL以外のWebサイトへの他のバインディングが不要であることも前提としています。

まず、いくつかの情報を収集する必要があります。ハッシュ、アプリケーションID、ホスト名が必要です。

手順

  1. IISを開き、サーバーを選択して、下部セクションの[サーバー証明書]をダブルクリックします。[発行先]アドレスに注意してください。これがホスト名です。これを保存します。
  2. サイトを選択してください
  3. httpプロトコルを使用してサイトをポート80にバインドします
  4. 他のすべてのバインディングを削除します
  5. httpsプロトコルを使用してサイトをポート443にバインドします
  6. コマンドプロンプトを開く

    netsh http show sslcert
    
  7. 証明書ハッシュとアプリケーションIDを保存します

  8. サイトのhttpsバインディングを削除します
  9. コマンドプロンプトで:

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

注:Appcmd.exeはc:\ windows \ system32 \ insetsrvにあります。このコマンドを機能させるには、そのフォルダーにいる必要がある場合があります。

  1. サイトからhttpバインディングを削除します

ありがとう!これにより、サイトが最終的にHTTPSで動作するようになりました。コマンドの1つでタイプミスを修正しましたが、最小の長さの要件を超えるにはステップの見出しを追加する必要がありました。それを自由に削除してください-あなたの元の答えは簡単に従うことができます。乾杯!
-potatopeelings

これは、複数のサイトがあったため、わずかな違いがある6つのSAN(ワイルドカード証明書ではない)の証明書で機能しました。手順1〜7を1回実行する必要がありました。ステップ8は各サイトで実行する必要がありました。ステップ9の最初のコマンドは1回実行する必要があり、ステップ9の2番目のコマンドはサイトごとに1回実行する必要がありました。
スティーブケイ

4

ここで受け入れられた答えは混乱を招くものであり、質問に対して正しいとは思いません。それは受け入れられた答えであってはなりません。

問題

などのワイルドカードSSLが*.ipsum.comあり、証明書がインストールされていますが、テキストボックスがグレー表示されているため、HTTPSバインディングを追加しようとすると、IISでサイトのホスト名を選択できません。

ソリューション

ワイルドカードSSLはどのサブドメインでも使用できます。証明書のフレンドリ名をで始めることを確認する必要があります*。ワイルドカードドメインと同じフレンドリ名を使用することを好みます。たとえば*.ipsum.com、アスタリスクが付いているものであれば何でも呼び出すことができます。*foo

証明書に間違ったフレンドリ名を付けました、助けて!

Windows 8またはServer 2012以降certlm.msc、スタートメニューに入力して、ローカルマシンの証明書を管理できます。以前のバージョンのWindowsでは、もう少し複雑な操作を行う必要があります。

  1. mmc.exe最初から実行
  2. Fileメニューに移動し、選択Add/Remove Snap-in...またはヒット(Ctrl-M)
  3. Certificatesスナップインをハイライトし、ヒットしてから、後続のダイアログでをAdd >選択し、続いてヒットしてからスナップインウィンドウを閉じますComputer AccountLocal ComputerFinishOK

メインウィンドウでは、拡張しCertificates (Local Computer)た後Personal、その後Certificates、あなたは右クリックして証明書、ヒットできるようになりますPropertiesあなたがフレンドリ名を更新することができます。

IISマネージャー閉じて開き、ホスト名を設定できます。


1
それはトリックをしました!
クレカー

1
@Zac素晴らしい。驚くばかり。驚くばかり。ホスト名フィールドが空白の場合、実際には問題ではないと思いますが、安心できました。証明書を再発行していることに注意してください。そのため、私のホスト名は、空白になる前にすでにホスト名フィールドにありました。ワイルドカードSSLは、フレンドリ名または。* mydomain.comタイプ名のいずれかで機能するように見えました。ホスト名フィールドが空白になった後、IISはホスト名の内部記録を保持していると思います。人々がおかしくなりそうな場合に備えて、これについて言及すべきだと思いました!
チャールズロバートソン

1
@ザックああ。このソリューションは、Windows 2008R2などの恐竜サーバーで動作します...
Charles Robertson

@CharlesRobertsonはこれが助けてくれてとても嬉しかったし、その補足情報を追加してくれてありがとう!
ザック

2

実際には、GUI経由でホストヘッダーを追加できますが、証明書の名前によって異なります...ワイルドカード証明書に* .xyz.comというフレンドリ名を付けて、その証明書を選択すると、 GUIを使用できます。フレンドリ名がxyzwildcardのようなもので、それを選択した場合、hostheaderフィールドがグレー表示されます...

奇妙な奇妙な


1

プロトコルがhttpsに変更された場合、またはSSL証明書を追加した後、一部のマシンではホスト名を編集できません。IISは時々不機嫌になることがあります。

このWindowsコマンドは、プロトコル「https」、ポート「443」、ホスト名「subdomain.domain.com」、サイト名「site name」で新しいバインディングを作成します。要件に合わせてこれらの値を(引用符で)変更します。ポート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

ホスト名は、選択した証明書のfriedlynameがホスト名* .xyz.comのような場合にのみ追加でき、mmc(Snap-in)から証明書のフレンドリ名を* .xyz.comに変更できます。


-1

このKBの記事は、この問題を明らかにするものになると思います。一言で言えば、HTTPを使用する場合、HTTP 1.1ホストヘッダーはサポートされていません。

おそらくあなたが望むことを達成するのは、SecureBindingsメタベースキーを使用することです。たとえば、cscript.exe adsutil.vbs set / w3svc / websiteID / SecureBindings "ip.ip.ip.ip:443:abc.123.mysite.com


IIS 7には適用されません。
davidcl10年

我々はそれをやったとき、それは働いていたので、...奇妙だもの
ジム・B

-1

ライセンスファイル(licx)を使用するASP.NETアプリケーションを使用している場合、ドメイン名ではなくIPアドレスとして表示されるため、サイトは機能しません。 。ソフトウェアの新しいリリースごとに想定をやめる必要があります。IT担当者はマイクロソフトにベビーシッターをする必要はありません。もう!


-2
  1. * .testcompany.comで自己署名証明書を作成し、[バインドSSL証明書の編集]ドロップダウンで新しく作成した(*で始まる)を選択し、ホスト名テキストボックスを有効にし、ホスト名を 'webapi.b2cとして作成しました.com '、

  2. C:\ Windows \ System32 \ drivers \ etc 127.0.0.1 webapi.b2c.comのhostsファイルを更新しました

これで、サイトを「https://webapp.b2c.com/」として閲覧できるようになりました

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.