1

https://とwww以外を使用します。 URLは常にです。だから、私はhtaccessファイルに次のコードを使用しました。警告メッセージが怒鳴る与えられているが、私はhttps://hstspreload.org警告:HTTP経由の不要なHSTSヘッダー

RewriteCond %{HTTPS} off 
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]  

<ifModule mod_headers.c> 
Header always set Strict-Transport-Security "max-age=31536000; 
includeSubDomains; preload" 
</ifModule> 

から警告を取得しています:

警告:http://mysiteurl.com不要HSTSヘッダ
HTTP経由でHTTPページはHSTSヘッダを送信します。これはHTTPに対して効果がなく、削除する必要があります。

助けてください上記の警告を取り除く。私はまた、次のコードで試してみましたが、それは、ユーザーがあなたがHTTPSを使用するように強制する場合HTTP

を使用して接続されている場合、問題は、あなたがヘッダを送信しているされて#ref. topic

Header always set Strict-Transport-Security "max-age=31536000; 
includeSubDomains; preload" env=HTTPS 

答えて

3

always属性を削除してみます。だから、次の操作を行います。

Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" env=HTTPS 

をこの代わりに:

Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" env=HTTPS 

他のオプションだけではなく、メインのトップレベルの設定よりもHTTPSのVirtualHostの中でこれを設定することです:

これを行います。これに代えて

<VirtualHost *:443> 
    (All other virtual host config) 
    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" 
</VirtualHost> 

Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" 
<VirtualHost *:443> 
    (All other virtual host config) 
</VirtualHost> 

これは、それぞれのVirtualHostに追加する必要があるという欠点があります(または、見た目によっては利点があります)が、最初のオプションは自動的にすべてのHTTPS仮想ホストに適用されます。

また、予圧には十分注意してください。それは容易に可逆的ではありません!あらかじめロードリストに登録する前に、良い(つまりエラーのない)設定(あなたが行っていないと思われる)を数ヶ月にわたって実行することを強くお勧めします。 (プリロードの提出が必要とし、あなたの設定を行うように設定されているなどのように)あなたがhttps://www.example.comを実行すると仮定すると、これはまたhttp://example.comに応答し、https://example.comにリダイレクトして、https://www.example.com:プリロードはあなたの問題を引き起こす可能性があります。一例を与えることを

。あなたのウェブサイトは素敵で安全です。しかし、ドメインを内部的に再利用する企業(これはかなり一般的です)では、特にプリロードするときに問題が発生する可能性があります。たとえば、http://intranet.example.comで公開されていない非セキュアサイト、またはhttp://dev.example.comというサイトのセキュリティで保護されていない開発版を実行した場合、このサイトもHTTPS経由でサービスする必要があります。 example.comのサブドメインです)。ほとんどの人がhttp://example.comまたはhttps://example.comにアクセスしないので、トップレベルドメインではこのHSTSヘッダーは見られないため、ほとんどの人が効果を発揮することはほとんどありません。しかし、プリロードが有効になるとすぐに、ブラウザーはアクセスしなくてもトップレベルドメインのHSTSについて知り、そのHTTP専用サイトへのアクセスを即座に失い、簡単にこれを取り消すことはできません!たくさんの企業がまだHTTP経由で提供されている多くの内部サイトとツールを持っており、それらをすべてHTTPSにアップグレードしています(これはとにかくbtwでやってください!)。

<VirtualHost *:443> 
    ServerName example.com 
    (All other virtual host config) 
    #Set HSTS at top level without includeSubDomain 
    Header always set Strict-Transport-Security "max-age=31536000" 
</VirtualHost> 

<VirtualHost *:443> 
    ServerName www.example.com 
    (All other virtual host config) 
    #Set HSTS at subdomain level 
    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains" 
</VirtualHost> 

これは、誰かが他を設定することができますよう(ほど安全ではありません。どちらか、この問題を回避内部で別のドメインを使用するか、またはあなただけのトップレベルドメインにincludeSubDomainせずにこれを設定することができますするには

http://wwww.example.com(4つのWに注意してください)またはhttp://fake.subdomain.comのようなHTTP上のサブドメインですが、少なくともHTTP専用サイトは壊れません。この設定は、トップレベルドメインであってもより安全なincludeSubDomainsを要求するため、プリロードリストからは許可されません。

トップレベルのドメインでもincludeSubDomainsを使用したい場合は、HTMLのトップレベルドメインからのリソースを含めることを強くお勧めします(HSTSが301/302sに設定されているため、wwwバージョンにリダイレクトされても)。この方法では、事前ロード前でも訪問者がトップレベルでHSTS設定を読み込むようにしています。

<img source="https://example.com/logo.png"> 

はそれで実行し、小さな有効期限、およびビットのための無プリロードタグ:たとえば、あなたの代わりにトップレベルドメインへの呼び出しにあなたのロゴを置き換えることができます。その後、有効期限を延長します。その後、すべてが機能する場合は、preloadタグを追加してpreloadリストに提出します。

これはすべて少し難しいかもしれませんが、おそらくあなたはすべてのことを考えていますが、事前ロードは考えられないと信じられないほど危険です。私がそれが最も安全なオプションであることに同意するけれども、私の意見では、HSTSをプリロードすることはほとんどのサイトにとって過度のものです。

+0

ありがとうございました –

0

を、実行動作しません。このような最初のリダイレクト。

RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 
+0

私はあなたのコードを追加しましたが、まだ警告を表示しています。 –

+0

この回答は全く問題にはなりません! –

関連する問題