ホームページ 運用・保守 Nginx nginx が HSTS を構成する方法

nginx が HSTS を構成する方法

May 14, 2023 pm 04:37 PM
nginx hsts

Netcraft は最近、SSL/TLS Web サイトのテストに関する調査結果を発表し、HTTP Strict Transport Security HSTS を正しく実装しているユーザーは 5% のみであると指摘しました。

HSTS とは

#HTTPS (SSL および TLS) は、ユーザーと Web サイト間の通信中のセキュリティを確保し、攻撃者による傍受、変更、なりすましを困難にします。ユーザーがドメイン名または http:// リンクを手動で入力すると、Web サイトへの最初のリクエストは暗号化されず、プレーン http を使用します。最も安全な Web サイトは、ユーザーを https 接続に誘導するリダイレクトを即座に送り返しますが、中間者攻撃者は最初の http リクエストを傍受し、それによってユーザーのその後の応答を制御できる可能性があります。

当然のことながら、HSTS はこの潜在的なセキュリティ問題を解決するために登場しました。ユーザーがドメイン名または http 接続を入力した場合でも、ブラウザは厳密に https 接続にアップグレードします。

nginx が HSTS を構成する方法

HSTS の仕組み

HSTS ポリシーは、安全な HTTPS サイトから送信される HTTP 応答ヘッダーで公開されます。

Strict-Transport-Security: max-age=31536000
ログイン後にコピー
ブラウザが HTTPS サイトからこのヘッダーを確認すると、ドメイン名には HTTPS (SSL または TLS) 経由でのみアクセスできることがわかります。そして、この情報を 31536000 (1 年分) にキャッシュします。

オプションのパラメーター includeSubDomains は、ポリシーが現在のドメインのすべてのサブドメインに適用されることをブラウザーに伝えます。

Strict-Transport-Security: max-age=31536000; includeSubDomains
ログイン後にコピー

nginx 設定 HSTS

nginx 設定ファイルに HSTS 応答ヘッダーを設定します。

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
ログイン後にコピー
always パラメーターにより、内部生成されたエラー応答を含むすべての応答でこのヘッダーが設定されるようになります。 1.7.5 より前の nginx バージョンは always パラメーターをサポートしておらず、内部生成されたエラー応答ではこのヘッダー情報が設定されません。

add_header ディレクティブの継承ルール:

nginx 構成ブロックは、add_header ディレクティブが配置されているカプセル化ブロックを継承するため、add_header ディレクティブをトップレベルのサーバー ブロックに配置するだけで済みます。重要な例外があり、ブロックに add_header ディレクティブ自体が含まれている場合、ブロックはそれを囲んでいるブロックからヘッダーを継承しないため、すべての add_header ディレクティブを再定義する必要があります。

server {
    listen 443 ssl;
 
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
 
    # This 'location' block inherits the STS header
    location / {
        root /usr/share/nginx/html;
    }
 
    # Because this 'location' block contains another 'add_header' directive,
    # we must redeclare the STS header
    location /servlet {
        add_header X-Served-By "My Servlet Handler";
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
        proxy_pass http://localhost:8080;
    }
}
ログイン後にコピー
テスト HTTP Strict Transport Security:

ユーザーが HSTS ポリシーを提案すると、そのキャッシュ情報の期間は max-age で指定されます。この間、ブラウザは暗号化されていない HTTP を介した Web サービスへのアクセスを拒否し、証明書エラーの例外を許可することを拒否します (Web サイトが以前に有効で信頼できる証明書を送信した場合)。 includeSubDomanis パラメーターが指定されている場合、これらの制限は現在のドメイン内のすべてのサブドメインにも適用されます。

HSTS をテストするときは、max-age 時間を短く設定してください。

各 HTTPS 応答に STS ヘッダーが必要かどうか:

私たちの目標は、ユーザーが HTTPS セッションを開始したときに、できるだけ早く HSTS ポリシーを提示することです。セッション中に HSTS ポリシーを受信した場合でも、HTTP ハイジャック攻撃に対して脆弱です。ブラウザーは STS ヘッダーを 1 回確認するだけでよいため、すべてのロケーション ブロックとすべての応答に STS ヘッダーを追加する必要は厳密にはありません。ただし、ホームページまたはログイン ページに追加するだけでは不十分な場合があります。キャッシュされた応答に追加するだけでは、クライアントに表示されない可能性があります。動的コンテンツに特に注意を払い、適切な範囲で URL をカバーするようにしてください。

HTTP と HTTPS の同時実行

Web サイトを HTTP と HTTPS で同時に実行する必要がある場合があります

server {
    listen  80;
    listen  443 ssl;
    ...
}
ログイン後にコピー
HTTP リクエストを同時に実行する必要がある場合があります。 https

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name _;
 
    # Discourage deep links by using a permanent redirect to home page of HTTPS site
    return 301 https://$host;
 
    # Alternatively, redirect all HTTP links to the matching HTTPS page
    # return 301 https://$host$request_uri;
}
 
server {
    listen 443 ssl;
    server_name www.ttlsa.com;
 
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
}
ログイン後にコピー

Enhanced HSTS

STS ヘッダーを確認してから宣言された最大有効期間まで、クライアントを HTTP インターセプトから保護します。ただし、HSTS は HTTP セッション ハイジャックに対する完璧なソリューションではありません。 HSTS で保護された Web サイトに HTTP 経由でアクセスする場合、ユーザーは引き続き脆弱です:

  1. これまでその Web サイトにアクセスしたことがない

  2. 最近再訪問したオペレーティング システムをインストールしましたシステム

  3. 最近ブラウザを再インストールしました

  4. 新しいブラウザに切り替えました

  5. 新しいブラウザに切り替えました携帯電話などのデバイス

  6. ブラウザのキャッシュを削除します

  7. 最近サイトにアクセスしていないため、最大有効期限が切れています

この問題を解決するために、Google は「HSTS プリロード リスト」サイトのドメイン名とサブドメイン名を維持することを主張し、https://hstspreload.appspot.com/ そのドメイン名を通じて提出しました。このドメイン名のリストは配布され、主要な Web ブラウザにハードコーディングされます。このリストのドメイン名にアクセスするクライアントは、HTTPS を積極的に使用し、HTTP を使用したサイトへのアクセスを拒否します。

STS ヘッダーが設定されるか、ドメインが HSTS プリロード リストに送信されると、それを削除することはできません。これは、ドメイン名を HTTPS 経由で利用できるようにするための一方的な決定です。

以上がnginx が HSTS を構成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Nginxが開始されるかどうかを確認する方法 Nginxが開始されるかどうかを確認する方法 Apr 14, 2025 pm 01:03 PM

nginxが開始されるかどうかを確認する方法:1。コマンドラインを使用します:SystemCTLステータスnginx(Linux/unix)、netstat -ano | FindStr 80(Windows); 2。ポート80が開いているかどうかを確認します。 3.システムログのnginx起動メッセージを確認します。 4. Nagios、Zabbix、Icingaなどのサードパーティツールを使用します。

nginxでクラウドサーバードメイン名を構成する方法 nginxでクラウドサーバードメイン名を構成する方法 Apr 14, 2025 pm 12:18 PM

クラウドサーバーでnginxドメイン名を構成する方法:クラウドサーバーのパブリックIPアドレスを指すレコードを作成します。 NGINX構成ファイルに仮想ホストブロックを追加し、リスニングポート、ドメイン名、およびWebサイトルートディレクトリを指定します。 nginxを再起動して変更を適用します。ドメイン名のテスト構成にアクセスします。その他のメモ:SSL証明書をインストールしてHTTPSを有効にし、ファイアウォールがポート80トラフィックを許可し、DNS解像度が有効になることを確認します。

nginxサーバーを開始する方法 nginxサーバーを開始する方法 Apr 14, 2025 pm 12:27 PM

NGINXサーバーを起動するには、異なるオペレーティングシステムに従って異なる手順が必要です。Linux/UNIXシステム:NGINXパッケージをインストールします(たとえば、APT-GetまたはYumを使用)。 SystemCtlを使用して、NGINXサービスを開始します(たとえば、Sudo SystemCtl Start NGinx)。 Windowsシステム:Windowsバイナリファイルをダウンロードしてインストールします。 nginx.exe実行可能ファイルを使用してnginxを開始します(たとえば、nginx.exe -c conf \ nginx.conf)。どのオペレーティングシステムを使用しても、サーバーIPにアクセスできます

Linuxでnginxを開始する方法 Linuxでnginxを開始する方法 Apr 14, 2025 pm 12:51 PM

Linuxでnginxを開始する手順:nginxがインストールされているかどうかを確認します。 systemctlを使用して、nginxを開始してnginxサービスを開始します。 SystemCTLを使用して、NGINXがシステムスタートアップでNGINXの自動起動を有効にすることができます。 SystemCTLステータスNGINXを使用して、スタートアップが成功していることを確認します。 Webブラウザのhttp:// localhostにアクセスして、デフォルトのウェルカムページを表示します。

nginx403を解く方法 nginx403を解く方法 Apr 14, 2025 am 10:33 AM

Nginx 403禁止エラーを修正する方法は?ファイルまたはディレクトリの許可を確認します。 2。HTACCESSファイルを確認します。 3. nginx構成ファイルを確認します。 4。nginxを再起動します。他の考えられる原因には、ファイアウォールルール、Selinux設定、またはアプリケーションの問題が含まれます。

Nginxが起動されているかどうかを確認する方法は? Nginxが起動されているかどうかを確認する方法は? Apr 14, 2025 pm 12:48 PM

Linuxでは、次のコマンドを使用して、nginxが起動されるかどうかを確認します。SystemCTLステータスNGINXコマンド出力に基づいて、「アクティブ:アクティブ(実行)」が表示された場合、NGINXが開始されます。 「アクティブ:非アクティブ(dead)」が表示されると、nginxが停止します。

Windowsでnginxを構成する方法 Windowsでnginxを構成する方法 Apr 14, 2025 pm 12:57 PM

Windowsでnginxを構成する方法は? nginxをインストールし、仮想ホスト構成を作成します。メイン構成ファイルを変更し、仮想ホスト構成を含めます。 nginxを起動またはリロードします。構成をテストし、Webサイトを表示します。 SSLを選択的に有効にし、SSL証明書を構成します。ファイアウォールを選択的に設定して、ポート80および443のトラフィックを許可します。

Nginxクロスドメインの問題を解決する方法 Nginxクロスドメインの問題を解決する方法 Apr 14, 2025 am 10:15 AM

Nginxクロスドメインの問題を解決するには2つの方法があります。クロスドメイン応答ヘッダーの変更:ディレクティブを追加して、クロスドメイン要求を許可し、許可されたメソッドとヘッダーを指定し、キャッシュ時間を設定します。 CORSモジュールを使用します。モジュールを有効にし、CORSルールを構成して、ドメインクロスリクエスト、メソッド、ヘッダー、キャッシュ時間を許可します。

See all articles