8

私の Web アプリケーション プロジェクトには、単一の IIS Express サイトの傘下で提供される複数の Web サイトが含まれています。私は Scott Hanselman の優れたブログ投稿に従うことに成功し、IIS Expressは同じ Web アプリケーション ルート ディレクトリからhttp ://foo.localhttp: //bar.local の両方を正常に提供しました。

ただし、SSL をサポートするには両方のサイトが必要です。Hanselman のアドバイスに従って、SSL 証明書を作成し、それを単一の IP ポートの組み合わせに「アタッチ」できます。

makecert -r -pe -n "CN=foo.local" -b 01/01/2000 -e 01/01/2036 -eku 1.3.6.1.5.5.7.3.1 -ss my -sr localMachine -sky exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12
netsh http add sslcert ipport=0.0.0.0:443 appid='{214124cd-d05b-4309-9af9-9caa44b2b74b}' certhash=284475d4a4eb5c4d3ab7da4fdefa928186482376

これは成功しますが、2 番目のサイトでこのプロセスを繰り返すことができません。明らかに、1 つの IP ポートの組み合わせに適用できる SSL 証明書は 1 つだけです。

https://foo.localhttps: //bar.local の両方をカバーする SSL 証明書を作成する方法、または各サイトに 1 つ「添付」する方法を教えてください。

4

2 に答える 2

10

jwwの答えは私を正しい方向に導きました。Hanselman の指示以外に、私がしなければならなかったことは次のとおりです。

まず、IIS Express の applicationhosts.config で、サイト バインドに対して SNI を有効にしました。sslFlagsこれは、属性を追加することを意味しました:

<binding protocol="https" bindingInformation="*:443:foo.local" sslFlags="1" />
<binding protocol="https" bindingInformation="*:443:bar.local" sslFlags="1" />

(クレジット: IIS8 で SNI を構成しますか? )

次に、を使用する代わりに、 PowerShell のコマンドレットmakecertを使用して自己署名証明書を作成しました。New-SelfSignedCertificate

New-SelfSignedCertificate -DnsName foo.local, bar.local -CertStoreLocation cert:\LocalMachine\My

(クレジット: Windows 8 で自己署名付き SAN 証明書を作成する方法)

それに加えて、Hanselman の指示に従いnetsh http add sslcert...、IP ポートの証明書を「登録」し、MMC の「証明書」スナップインを使用して信頼できるようにしました。

于 2014-07-30T15:49:58.897 に答える
2

明らかに、単一の IP ポートの組み合わせに適用できる SSL 証明書は 1 つだけです...

複数の証明書を使用するには、IIS 8 以降が必要です。IIS 8 は、Server Name Indication (SNI) をサポートしています。IIS 8 でのサーバー名表示 (SNI) (Windows Server 2012)を参照してください。


https://foo.localhttps://bar.local...の両方をカバーする SSL 証明書を作成するにはどうすればよいですか?

証明書を 1 つ作成します。証明書では、両方の名前をサブジェクト代替名 (SAN) に配置します。CN にわかりやすい名前を付けます。

次の理由から、CN はわかりやすい名前にする必要があります。

  1. IETF は、CN に DNS 名を配置することを非推奨にしました
  2. CA/Browser Forums は、CN に DNS 名を配置することを非推奨にしました
  3. CN はユーザーに表示されることが多いため、わかりやすいものにする必要があります。

...または、各サイトに1つ「添付」しますか?

IIS 8 または Server 2012 にアップグレードします。


ヘンゼルマンのアドバイスに従って...makecert -r -pe -n "CN=foo.local"

彼のアドバイスはここでは間違っています。

于 2014-07-30T00:17:29.683 に答える