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を必要とするアクションに移行しようとすると、「サーバーが接続を拒否しました」というエラーが表示されます。
私は何を間違えていますか?
IISExpressを使用するようにプロジェクトを設定したら、ソリューションエクスプローラーでプロジェクトが選択されているときにF4
を押して、プロパティとSSL Enable
set true
の下のプロパティを起動しますSSL URL
は、SSLに使用するポート(この場合は443)でURLを設定します。
これは私に裏をかかずに動作し、自己署名証明書は自動でした。
デフォルトでそのURLでプロジェクトを実行するには、プロジェクトを右クリックし、プロパティを選択してからWebを選択し、プロジェクトURLを https:// localhost:44 に置き換えます。
私は答えを見つけました。
ステップ6で、間違ったIIS Express application.configファイルを変更していました。アプリケーションのホームディレクトリに「マスター」設定ファイルがあることがわかりました(例、C:\Program Files (x86)\IIS Express\AppServer
、私のシステム上)、これは私が変更したものです。
2番目と修正する正しいファイルは、ユーザーデータ領域にあるものです(例:C:\Users\Mark.ARCABAMA\Documents\IISExpress\config
、私のシステム上)。
Jbtuleの手順を実行してもSSLがまだ機能しない場合は、ポートが:443XX
形式であることを確認してください。
Visual Studioは、SSLを有効にした最初のプロジェクトに対してこれを自動的に行いましたが、後続のプロジェクトにはランダムなSSLポートがあるようです。 Project > Web
UIの下で上記の443構造に変更すると、うまくいき、動作しました。
同じ問題を解決してくれたソリューションを追加したいと思います。
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が修正されました。
私は最近、VS 2019で非常に似た問題を抱えていましたIISEpress。ADFSを使用できるようにhttpをhttpsに変更しようとしました。 )。
もう少し調査した後、「SSLが必要」プロパティをtrueからfalseに切り替え、再びtrueに戻そうとしました。これにより、httpsプロトコルの新しいポート番号で新しいSSLバインディングを作成するapplicationhost.configファイル(..。Vs\ProjectName\config\applicationhost.config)の更新がトリガーされました。そこで、提案された新しいポート(プロジェクトのWebプロパティ、構成ファイル、ADFS構成)ですべてのリンクを変更しましたが、機能します。結論として、httpポートが同じサイトのhttpsと同じである必要はありません。