1

最近 http から https に移動され、デフォルト ポートにある自分の Web サイト (例: www.example.com) に HSTS を実装しようとしています。また、同じドメインで別のポート (例: www.example.com:8000) で実行されている WCF サービスがあります。

私がやろうとしたことは、Web.configファイルに次のコードを追加することです

<system.webServer>
    <httpProtocol>
        <customHeaders>
            <add name="Strict-Transport-Security" value="max-age=31536000"/>
        </customHeaders>
    </httpProtocol>
</system.webServer>

そして後で、ここからこのコードを試しました(上記の実装が間違っていると言われたため)

<system.webServer>
    <rewrite>
        <rules>
            <rule name="HTTP to HTTPS redirect" 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>
            <rule 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>

私のウェブサイト www.example.com は正常に動作します。しかし、www.example.com にアクセスすると、応答ヘッダー Strict-Transport-Security がキャッシュされ、WCF サービス ページにアクセスしようとすると、https にリダイレクトされ、サービスが 8000 ポートで実行されているため、「SSL エラー」が発生します。

注: キャッシュをクリアして同じサービス ページにアクセスすると、ページが表示されます。

ポート 8000 で行われた呼び出しの https へのリダイレクトを停止するにはどうすればよいですか?

4

1 に答える 1

2

HSTS は、ポート 80 だけでなく、ドメイン上のすべてのHTTP 呼び出しに適用されます。

RFCから:

UA は URI スキームを「https」[RFC2818] に置き換える必要があり、

URI に「80」の明示的なポート コンポーネントが含まれている場合、UA はポート コンポーネントを「443」に変換する必要があります。

URI に「80」以外の明示的なポート コンポーネントが含まれている場合、ポート コンポーネントの値を保持する必要があります。それ以外は、

URI に明示的なポート コンポーネントが含まれていない場合、UA はポート コンポーネントを追加してはなりません (MUST NOT)。

注: これらの手順により、HSTS ポリシーが HSTS ホストの任意の TCP ポートを介して HTTP に適用されるようになります。

そのため、次のいずれかを実行する必要があります。

  1. WCF サービスも https に切り替えます。
  2. HSTS ポリシーの影響を受けないように、WCF サービスのドメインを切り替えます。
  3. HSTS の使用を停止します。
于 2015-11-23T21:49:06.847 に答える