74

開発中の 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 を必要とするアクションに移行しようとすると、「サーバーが接続を拒否しました」というエラーが発生します。

私は何を間違っていますか?

4

5 に答える 5

101

IISExpress を使用するようにプロジェクトを設定した後F4、ソリューション エクスプローラーでプロジェクトが選択されている間に を押して、プロパティを表示し、プロパティ セットSSL Enableセットtrueで、必要なSSL URLポート (この場合は 443) を使用して URL を設定します。 SSL。

これは、内部に入ることなく機能し、自己署名証明書は自動でした。

デフォルトでその URL でプロジェクトを実行するには、プロジェクトを右クリックし、プロパティを選択してから Web を選択し、プロジェクト URL をhttps://localhost:443に置き換えます。

于 2011-04-06T14:35:44.677 に答える
22

jbtule の手順に従っても SSL が機能しない場合は、ポートの形式が であることを確認してください:443XX

Visual Studio は、SSL を有効にした最初のプロジェクトに対してこれを自動的に行いましたが、その後のプロジェクトにはランダムな SSL ポートがあるようです。Project > WebUIの下で上記の443構造に変更すると、それが起動して機能しました。

于 2016-12-29T21:07:23.550 に答える
6

私は答えに出くわしました。

手順 6 で、間違った IIS Express の application.config ファイルを変更していました。C:\Program Files (x86)\IIS Express\AppServerアプリケーションのホーム ディレクトリ (たとえば、私のシステムの ) に「マスター」構成ファイルがあることがわかりました。これは、私が変更したものです。

修正する2 番目の正しいファイルは、ユーザー データ領域 (たとえば、C:\Users\Mark.ARCABAMA\Documents\IISExpress\config私のシステム) にあるファイルです。

于 2011-04-03T01:04:29.933 に答える