背景
プロジェクトの要件とセキュリティ上の理由により、以前の http インターフェイス アクセスを https アクセスに変更する必要があるため、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 と同じディレクトリ) に配置します。ここでは特別な注意を払う必要があります:
Linux システムで構成されている場合は準備完了です;
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 サイトの他の関連記事を参照してください。