開発中の VS2010 MVC3 プロジェクトの安全な接続を IIS Express で受け入れることができません。ポート 80 では安全でない接続を受け入れるようにできますが、ポート 443 では安全ではありません。
グーグルに基づいて、次の手順を実行しました。
1) VS2010 コマンドラインで次のコマンドを実行して、IIS Express サーバーの自己署名証明書の SHA1 拇印を見つけました。
certmgr.exe /c /s /r localMachine MY
結果は 9B088F80 A4FC3141 28F62890 70BA1FC4 49FDD009 でした。拇印を使用するときはスペースを削除する必要があることを後で知りました。
2) 管理者特権のコマンドライン プロンプトで次のコマンドを実行して、ポート 443 にリンクされていた証明書をすべて削除しました。
netsh http delete sslcert ipport=0.0.0.0:443
3) VS2010 の [ツール] メニューから [GUID の作成] を実行して、新しい GUID を生成しました。私の場合、B0421A5B-FF61-47CE-892D-11AA3A9C7D2A を取得しました。
4) 管理者特権のコマンドライン プロンプトで次のコマンドを実行して、自己署名証明書をポート 443 にインストールしました。
netsh http add sslcert ipport=0.0.0.0:443 certhash=9B088F80A4FC314128F6289070BA1FC449FDD009 appid={B0421A5B-FF61-47CE-892D-11AA3A9C7D2A}
5) 昇格したコマンドライン プロンプトから次のコマンドを実行して、ACL を変更しました。
netsh http add urlacl url=https://localhost:443/ user=everyone
6) ポート 443 と https プロトコルのバインドを追加して、IIS Express の application.config ファイルを変更しました。ファイルのサイト セクションは、最終的に次のようになります。
<sites>
<site name="Development Web Site" id="1" serverAutoStart="true">
<application path="/">
<virtualDirectory path="/" physicalPath="%IIS_BIN%\AppServer\empty_wwwroot" />
</application>
<bindings>
<binding protocol="https" bindingInformation="*:443:localhost" />
<binding protocol="http" bindingInformation="*:80:localhost" />
</bindings>
</site>
<siteDefaults>
<logFile logFormat="W3C" directory="%IIS_USER_HOME%\Logs" />
<traceFailedRequestsLogging directory="%IIS_USER_HOME%\TraceLogFiles" enabled="true" maxLogFileSizeKB="1024" />
</siteDefaults>
<applicationDefaults applicationPool="IISExpressAppPool" />
<virtualDirectoryDefaults allowSubDirConfig="true" />
</sites>
7) 管理者特権のコマンドライン プロンプトで次のコマンドを実行して、http サービスを再起動しました。
net stop http
net start http
8) MVC プロジェクトの [プロパティ] ページの [Web] タブにあるプロジェクト URL を次のように変更しました。
http://localhost/
この変更を行った後、プロジェクトのプロパティ ページを保存すると、サーバーの再構成が開始されました。
VS2010 内から MVC アプリを起動すると、正しくhttp://localhostに結び付けられます(デフォルトのポート 80 で、IIS Express をポート 80 の安全でない/通常の接続で動作させるためのすべての手順を含めていません。ただし、これらは基本的に手順 5 から 7 ですが、https とポート 443 ではなく、http とポート 80 に焦点を当てています)。
ただし、https を必要とするアクションに移行しようとすると、「サーバーが接続を拒否しました」というエラーが発生します。
私は何を間違っていますか?