1. ホーム
  2. asp.net-mvc

IIS Express -- SSLを動作させる

2023-09-21 16:56:08

質問

開発中の VS2010 MVC3 プロジェクトで、IIS Express に安全な接続を許可させることができません。ポート 80 で安全でない接続を受け入れるようにすることはできますが、ポート 443 で安全な接続を受け入れることはできません。

私は、グーグル検索に基づいて、次のステップを踏みました。

1) VS2010 のコマンドラインで以下を実行することにより、IIS Express Server の自己署名証明書の 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のツールメニューからCreate 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) IIS Express の application.config ファイルを変更し、ポート 443 と https プロトコルのバインドを追加しました。このファイルのサイトセクションは、最終的に次のようになりました。

        <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タブにあるProject URLを以下のように変更しました。

http://localhost/

プロジェクトのプロパティページを保存すると、この変更を行った後、サーバーの再構成がトリガーされました。

VS2010 内から MVC アプリを起動すると、正しく次のように結びつきます。 http://localhost (IIS Express がポート 80 の安全でない/通常の接続で動作するようにするためのすべての手順は含まれていませんが、基本的には手順 5 から 7 になっています。)

しかし、https を必要とするアクションに移行しようとすると、"server refused connection" というエラーが表示されます。

私は何を間違えているのでしょうか?

どうすればよいのでしょうか?

IISExpressを使用するプロジェクトを設定した後に F4 を押してプロパティを表示し、プロパティ セットで SSL Enable を設定します。 true で、その下に SSL URL の下に、SSLに必要なポート(あなたの場合は443)をURLに設定します。

これで、下調べをしなくても動作し、自己署名証明書も自動で発行されました。

デフォルトでその URL でプロジェクトを実行するには、プロジェクトを右クリックして、プロパティを選択し、Web を選択して、Project Url を https://localhost:443