Web.configにURL書き換えコードを追加し、それをAzureに発行したとき。 httpでウェブサイトにアクセスしようとしても、自動的にhttpsにリダイレクトされます。
<rewrite>
<rules>
<rule name="Redirect to https">
<match url="(.*)"/>
<conditions>
<add input="{HTTPS}" pattern="Off"/>
</conditions>
<action type="Redirect" url="https://{HTTP_Host}/{R:1}"/>
</rule>
</rules>
</rewrite>
しかし、ローカルマシンで同じコードを実行すると、次のエラーが発生します。
このサイトは安全な接続を提供できません
ローカルマシンで上記のコードを実行するときに、上記のエラーを解決するにはどうすればよいですか?
私が個人的に行っているのは、その構成をWeb.Release.configに書き直すことです。ローカルで動作させるのは少し面倒だからです。
問題は、IIS Expressは異なるポートでHTTPとHTTPSを公開するため、http://localhost:1234
からhttps://localhost:1234
にリダイレクトすると、単に動作しません。 IIS Expressはhttps://localhost:44300
などのHTTPSを公開しています。
IIS ExpressでSSL/TLSを有効にすることができます(そうする必要があります)が、リライトルールはリリースモードのみに残します。
Web.Release.configファイルの例を次に示します。
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.Microsoft.com/XML-Document-Transform">
<system.web>
<compilation xdt:Transform="RemoveAttributes(debug)" />
</system.web>
<system.webServer>
<rewrite xdt:Transform="Insert">
<rules>
<!-- Redirects users to HTTPS if they try to access with HTTP -->
<rule
name="Force HTTPS"
stopProcessing="true">
<match url="(.*)"/>
<conditions>
<add input="{HTTPS}" pattern="^OFF$" ignoreCase="true"/>
</conditions>
<action
type="Redirect"
url="https://{HTTP_Host}/{R:1}"
redirectType="Permanent"/>
</rule>
</rules>
<outboundRules>
<!-- Enforces HTTPS for browsers with HSTS -->
<!-- As per official spec only sent when users access with HTTPS -->
<rule
xdt:Transform="Insert"
name="Add Strict-Transport-Security when HTTPS"
enabled="true">
<match serverVariable="RESPONSE_Strict_Transport_Security"
pattern=".*" />
<conditions>
<add input="{HTTPS}" pattern="on" ignoreCase="true" />
</conditions>
<action type="Rewrite" value="max-age=31536000" />
</rule>
</outboundRules>
</rewrite>
</system.webServer>
</configuration>
ここでHSTSも追加していることに注意してください。 <rewrite>
要素をリリースモードでWeb.configに挿入します。 <system.webServer>
要素はWeb.configに既に存在します。そうでない場合は挿入します。
HTTPSで使用するVisual Studio Serverを構成する必要があります。詳細については、次のリンクをご覧ください。
Visual Studioの組み込みASP.NET開発サーバーを使用したHTTPS
古いバージョンのChrome Webブラウザーでこの問題を解決しました。
これは 古いバージョンのリストchromeバージョン です。ダウンロードしてインストールできます。
60.0.3112.90-Ubuntuの場合、私にとっては問題なく機能するバージョンです。
多分それは新しいバージョンより少し遅いかもしれませんが、私はそれが生産のためにかなり良いことがわかりました(: