検索
ホームページ運用・保守Nginxnginx が HSTS を構成する方法

nginx が HSTS を構成する方法

May 14, 2023 pm 04:37 PM
nginxhsts

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 までご連絡ください。
Nginx vs. Apache:パフォーマンス、スケーラビリティ、効率Nginx vs. Apache:パフォーマンス、スケーラビリティ、効率Apr 19, 2025 am 12:05 AM

NginxとApacheはどちらも強力なWebサーバーであり、それぞれがパフォーマンス、スケーラビリティ、効率の点で独自の利点と短所を備えています。 1)nginxは、静的なコンテンツを処理し、逆プロキシを逆にするときにうまく機能します。 2)Apacheは、動的コンテンツを処理するときにパフォーマンスが向上し、リッチモジュールサポートが必要なプロジェクトに適しています。サーバーの選択は、プロジェクトの要件とシナリオに基づいて決定する必要があります。

究極の対決:Nginx vs. Apache究極の対決:Nginx vs. ApacheApr 18, 2025 am 12:02 AM

Nginxは、高い並行リクエストの処理に適していますが、Apacheは複雑な構成と機能的拡張が必要な​​シナリオに適しています。 1.Nginxは、イベント駆動型の非ブロッキングアーキテクチャを採用しており、高電流環境に適しています。 2。Apacheはプロセスまたはスレッドモデルを採用して、複雑な構成のニーズに適したリッチモジュールエコシステムを提供します。

Nginx in Action:例と現実世界のアプリケーションNginx in Action:例と現実世界のアプリケーションApr 17, 2025 am 12:18 AM

Nginxは、Webサイトのパフォーマンス、セキュリティ、およびスケーラビリティを改善するために使用できます。 1)逆プロキシおよびロードバランサーとして、Nginxはバックエンドサービスを最適化し、トラフィックを共有できます。 2)イベント駆動型および非同期アーキテクチャを通じて、nginxは高い並行接続を効率的に処理します。 3)構成ファイルでは、静的ファイルサービスやロードバランシングなどのルールの柔軟な定義を可能にします。 4)最適化の提案には、GZIP圧縮の有効化、キャッシュの使用、およびワーカープロセスの調整が含まれます。

Nginxユニット:さまざまなプログラミング言語をサポートしますNginxユニット:さまざまなプログラミング言語をサポートしますApr 16, 2025 am 12:15 AM

Nginxunitは複数のプログラミング言語をサポートし、モジュラー設計を通じて実装されています。 1。言語モジュールの読み込み:構成ファイルに従って対応するモジュールをロードします。 2。アプリケーションの起動:呼び出し言語が実行されたときにアプリケーションコードを実行します。 3。リクエスト処理:リクエストをアプリケーションインスタンスに転送します。 4。応答返品:処理された応答をクライアントに返します。

nginxとapacheを選択する:あなたのニーズに合った適切nginxとapacheを選択する:あなたのニーズに合った適切Apr 15, 2025 am 12:04 AM

NginxとApacheには独自の利点と短所があり、さまざまなシナリオに適しています。 1.Nginxは、高い並行性と低リソース消費シナリオに適しています。 2。Apacheは、複雑な構成とリッチモジュールが必要なシナリオに適しています。コア機能、パフォーマンスの違い、ベストプラクティスを比較することで、ニーズに最適なサーバーソフトウェアを選択するのに役立ちます。

nginxを開始する方法nginxを開始する方法Apr 14, 2025 pm 01:06 PM

質問:nginxを開始する方法は?回答:nginxスタートアップnginx検証nginxはnginxを開始しました他のスタートアップオプションを自動的に開始

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 01:00 PM

NGINXサービスをシャットダウンするには、次の手順に従ってください。インストールタイプを決定します:Red Hat/Centos(SystemCtl Status Nginx)またはDebian/Ubuntu(Service Nginx Status)サービスを停止します:Red Hat/Centos(SystemCtl Stop Nginx)またはDebian/Ubuntu(Service Nginx Stop)無効自動起動(オプション):Debuntos/Centos/Centos/Centos/Centos/Centos (syst

See all articles

ホット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ヘンタイを無料で生成します。

ホットツール

SublimeText3 中国語版

SublimeText3 中国語版

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

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境