HTTPS アクセスを実現するために Nginx SSL 証明書を構成する方法

PHPz
リリース: 2023-05-12 15:07:12
転載
1339 人が閲覧しました

背景

プロジェクトの要件とセキュリティ上の理由により、以前の http インターフェイス アクセスを https アクセスに変更する必要があるため、SSL 証明書を構成する必要があります。プロジェクトのアーキテクチャは次のとおりです:

HTTPS アクセスを実現するために Nginx SSL 証明書を構成する方法

基本的なアーキテクチャは、ハード ロード (readwhere) ソフト ロード (nginx) tomcat クラスターです。 ssl 証明書はどこで設定する必要がありますか、ハードロードで直接設定しますか?それともnginxとtomcatでそれぞれ設定しますか?それとも他の設定方法があるのでしょうか?

まず、ハードロードの設定をあきらめ、インターネットで情報を検索したところ、nginx でのみ証明書を設定できることがわかりました。つまり、nginx はアクセスに https を使用します。 、http は nginx と Tomcat 間の接続に使用されます。これにより、全体的なアイデアが得られます。

SSL 証明書について

SSL 証明書については、プロジェクトの必要性もあって、簡単に理解しました。

SSL証明書は大きくドメインレベル(dv)、エンタープライズレベル(ov)、エンハンスドレベル(ev)の3種類に分かれており、順にセキュリティが高く、価格も高くなります。個人向けには安価なdv、法人向けには一般的にov、特殊な場合にはevというように用途に応じて選択してください。

ssl 証明書設定

nginx の ssl 証明書設定のサポートにより、この実装が可能になったため、nginx の強さを嘆かざるを得ません。

証明書の準備

nginx 構成には .pem/.crt 証明書.key が必要です。現在他の形式の証明書をお持ちの場合は、関連する手順に従って、必要な証明書タイプがない場合、証明書の構成を完了できません。通常、購入する販売者は対応する変換ツールを備えています。

準備ができたら、証明書と秘密キーを nginx の conf ディレクトリ (つまり、設定ファイル nginx.conf と同じディレクトリ) に配置します。ここでは特別な注意を払う必要があります:

  1. Linux システムで構成されている場合は準備完了です;

  2. Windows システムで構成されている場合は、.key 内のパスワード秘密キー ファイルを削除する必要があります。そうしないと、設定後に nginx が起動しません。これが落とし穴です。ここで行き詰まっています。具体的な解決策も非常に簡単です。openssl の Windows バージョンをオンラインでダウンロードし、cmd を bin ディレクトリに切り替えますopenssl rsa. -inserver.key-outserver2.keyを実行すると、生成されたserver2.keyは設定に必要な秘密鍵ファイルですが、ファイル名をserver.keyに変更する必要があります。

nginx 設定ファイルの変更

以下は nginx.conf 設定ファイルの一部です。ポートはデフォルトの 443 ではありませんが、変更されています。 8185 になりますので、必要に応じて変更してください。その他の構成は基本的に以下の通りで問題ありません。

server {
    listen    8185;
    server_name localhost; 
    ssl         on; 
    ssl_certificate   server.pem; 
    ssl_certificate_key server.key; 
    ssl_session_timeout 5m;
    ssl_protocols tlsv1 tlsv1.1 tlsv1.2;
    ssl_ciphers high:!rc4:!md5:!anull:!enull:!null:!dh:!edh:!exp:+medium; 
    ssl_prefer_server_ciphers  on;

    location / {
      proxy_set_header host $host:$server_port; 
      proxy_set_header x-real-ip $remote_addr; 
      proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; 
      proxy_set_header x-forwarded-proto $scheme;
      proxy_connect_timeout  5;
      proxy_send_timeout   5;
      proxy_read_timeout   5; 
      proxy_pass http://qlddm_server;
    }
ログイン後にコピー

Tomcat 構成ファイルを変更する

Tomcat で証明書を構成する必要はありませんが、Tomcat 構成のserver.xml 構成ファイルを変更する必要があります。具体的には 2 つの場所が含まれます:

<connector 
    executor="tomcatthreadpool"
    port="7083" 
    protocol="org.apache.coyote.http11.http11nio2protocol" 
    connectiontimeout="20000" 
    maxconnections="8000" 
    redirectport="8185" 
    proxyport="8185"
    enablelookups="false" 
    acceptcount="100" 
    maxpostsize="10485760" 
    compression="on" 
    disableuploadtimeout="true" 
    compressionminsize="2048" 
    acceptorthreadcount="2" 
    compressablemimetype="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript" 
    uriencoding="utf-8"
  />
ログイン後にコピー

リダイレクトポートとプロキシポートの両方を nginx リスニング ポート番号に変更する必要があります。

<valve classname="org.apache.catalina.valves.remoteipvalve"
       remoteipheader="x-forwarded-for"
       protocolheader="x-forwarded-proto"
       protocolheaderhttpsvalue="https" httpsserverport="8185"/>
ログイン後にコピー

上記の値タグを追加する必要があります。httpsserverport も nginx のリスニング ポート番号に変更する必要があることに注意してください。

以上がHTTPS アクセスを実現するために Nginx SSL 証明書を構成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート