web-dev-qa-db-ja.com

IIS Express-SSLを機能させる

IIS Expressを取得できず、開発中のVS2010 MVC3プロジェクトの安全な接続を受け入れることができます。ポート80で安全でない接続を受け入れることはできますが、ポート443では安全ではありません。

グーグルに基づいて、次の手順を実行しました。

1)VS2010コマンドラインで次を実行することにより、IIS Express Server自己署名証明書のSHA1 thumb印を見つけました。

certmgr.exe /c /s /r localMachine MY

結果は9B088F80 A4FC3141 28F62890 70BA1FC4 49FDD009でした。後で、thumb印を使用するときにスペースを削除する必要があることを学びました。

2)昇格したコマンドラインプロンプトで次を実行して、ポート443にリンクされた証明書を削除しました。

netsh http delete sslcert ipport=0.0.0.0:443

3)Create GUID= VS2010 Toolsメニューから実行して、新しい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を必要とするアクションに移行しようとすると、「サーバーが接続を拒否しました」というエラーが表示されます。

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

59
user553671

IISExpressを使用するようにプロジェクトを設定したら、ソリューションエクスプローラーでプロジェクトが選択されているときにF4を押して、プロパティとSSL Enable set trueの下のプロパティを起動しますSSL URLは、SSLに使用するポート(この場合は443)でURLを設定します。

これは私に裏をかかずに動作し、自己署名証明書は自動でした。

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

75
jbtule

私は答えを見つけました。

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

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

6
user553671

Jbtuleの手順を実行してもSSLがまだ機能しない場合は、ポートが:443XX形式であることを確認してください。

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

6
shloosh

同じ問題を解決してくれたソリューションを追加したいと思います。

VSはhttps://[an IP, not localhost]:44367であるSSL URLを示しました

URLは予約されていました。netsh http show urlaclで見つけました

次にnetsh http delete urlacl https://[an IP, not localhost]:44367を実行し、VSを再起動し、SSLをfalseに設定してSSLをオフにしてから、再度オンにしました。これにより、SSL URLが修正されました。

0
Vegard Stenvik

私は最近、VS 2019で非常に似た問題を抱えていましたIISEpress。ADFSを使用できるようにhttpをhttpsに変更しようとしました。 )。

もう少し調査した後、「SSLが必要」プロパティをtrueからfalseに切り替え、再びtrueに戻そうとしました。これにより、httpsプロトコルの新しいポート番号で新しいSSLバインディングを作成するapplicationhost.configファイル(..。Vs\ProjectName\config\applicationhost.config)の更新がトリガーされました。そこで、提案された新しいポート(プロジェクトのWebプロパティ、構成ファイル、ADFS構成)ですべてのリンクを変更しましたが、機能します。結論として、httpポートが同じサイトのhttpsと同じである必要はありません。

0
Med SOMAI