HTTPとHTTPSの両方のWebサイトでのHSTSの動作と、それらのHTTPおよびHTTPS埋め込みリソースを調べています。私の理解では、HSTS応答ヘッダーがHTTPS応答でサーバーによって渡された場合、またはサイトの名前がHSTSプリロードリストに存在する場合、その要求のすべてのリソースはHTTPSで送信されます。
ただし、Firefox Web Inspectorを介して一部のサイトを検査しているときに、いくつかの矛盾に気づきました。たとえば、ここの_cnn.com
_(HTTP Webサイト)では、_doubleclick.net
_のサブドメインのリクエストの一部は、HSTSプリロードリストに here =(include_subdomains:trueを使用)。
ルートドメインがHSTSヘッダーを送信しているかどうかをテストするために、ロケーションアドレスバーの_ad.doubleclick.net
_リンクに移動すると、ダブルクリックのメインサイト_https://www.doubleclickbygoogle.com
_が表示されます。ここにHSTSヘッダーが送信されます:
しかし、リロードしても_cnn.com
_に対するdoubleclick
のリクエストには影響がありません。
もう1つの興味深いことは、[インスペクター]タブに移動してDOMでリクエストのソースタグを見つけようとしたときに、_http://ad.doubleclick.net
_(クエリ文字列でつながれている)を持つタグがないことです。インスペクタの「原因」と「タイプ」の見出しは、ピクセルのトラッカーのようなものを示しているようです。
誰かがここで何が起こっているのか考えていますか?
あなたが言及したソースコードから引用するには:
354 // Other Google-related domains that must use an acceptable certificate
355 // iff using SSL.
...
361 { "name": "doubleclick.net", "include_subdomains": true, "pins": "google" },
これは、証明書が固定されていることを意味しますiffサイトはhttps経由で提供されます。これは、サイトをhttps経由で提供する必要があるという意味ではありません。これは、force-https
属性が設定されている他のドメインとは異なります。
264 { "name": "accounts.google.com", "include_subdomains": true, "mode": "force-https", "pins": "google" },
編集:Chromiumのソースコードに基づいて(TransportSecurityState::GetStaticDomainState
内の関数net/http/transport_security_state.cc
)chrome://net-internals/#hsts
に表示される情報と、静的情報との関係を説明しますnet/http/transport_security_state_static.json
の例を使用doubleclick.net
:
static_sts_domain: doubleclick.net
static_upgrade_mode: OPPORTUNISTIC
OPPORTUNISTICがデフォルトのモードです(STSState::MODE_DEFAULT
)。これは、HTTPSを強制しないことを意味します。設定に明示的なforce-https
設定が指定されていないため、デフォルトモードが使用されます。
static_sts_include_subdomains: true
Httpsを強制しないため、この設定は重要ではありません。ただし、この構成行にinclude_subdomains
が含まれていない場合でも、値は上記のforce-https
の構成が原因である可能性があります。
static_sts_observed: 1476162000
これは、静的HSTS/HPKPリストの作成時間です。つまり、この場合は2016/09/04です。
static_pkp_domain: doubleclick.net
static_pkp_include_subdomains: true
static_pkp_observed: 1476162000
static_spki_hashes: sha256/IPMbDAjLVSGntGO3WP53X/zilCVndez5YJ2+vJvhJsA=,sha256/7HIpactkIAq2Y49orFOOQKurWxmmSFZhBCoQYcRhJ3Y=,sha256/h6801m+z8v3zbgkRHpq6L29Esgfzhj89C1SyUCOQmqU=
これらは固定に関する情報です。これらは、上に示した設定(つまり、include_subdomains
と使用するピン)に直接関係しています。
HSTSは、設定されているドメインにのみ適用されます。
あなたが探しているのは、安全でないアップグレード要求のCSPディレクティブです。
Content-Security-Policy:upgrade-insecure-requests
HSTSプリロードリストでは、キーの固定用のHSTSに対してdoubleclick.netがリストされていません。
https://scotthelme.co.uk/migrating-from-http-to-https-ease-the-pain-with-csp-and-hsts/ の詳細