Nginx を使用して SSL 証明書を動的にロードおよび更新する方法
概要:
現代のインターネット環境では、ユーザー データのセキュリティを保護することが非常に重要です。その中でも、SSL/TLS 証明書を使用して Web サーバーとの通信を暗号化する方法が一般的です。ただし、従来の方法では、Nginx 構成ファイルを手動で変更し、サーバーをリロードする必要があるため、証明書の更新時に Web サイトにダウンタイムが発生します。この記事では、Nginx モジュールとスクリプトを使用して SSL 証明書を動的に読み込み、更新し、Web サイトの安定性と可用性を向上させる方法を紹介します。
実装プロセス:
必要な依存関係のインストール:
まず、Nginx と OpenSSL がサーバーにインストールされていることを確認します。さらに、LuaJIT 開発パッケージもインストールする必要があります。
sudo apt-get install nginx openssl libluajit-5.1-dev
証明書保管ディレクトリの作成:
SSL 証明書とキー ファイルを保管するディレクトリをサーバー上に作成します。
sudo mkdir -p /etc/nginx/ssl
Lua スクリプトの作成:
SSL 証明書を動的にロードおよび更新するための Lua スクリプトを作成します。 「ssl_cert_updater.lua」という名前の新しいファイルを作成し、次のコードを追加します。
local ssl_cert_path = "/etc/nginx/ssl/cert.pem" local ssl_key_path = "/etc/nginx/ssl/key.pem" local function update_ssl_cert() -- 从远程服务器下载最新的SSL证书文件和密钥文件,并保存到指定路径 os.execute("wget -O " .. ssl_cert_path .. " https://example.com/cert.pem") os.execute("wget -O " .. ssl_key_path .. " https://example.com/key.pem") -- 重新加载Nginx配置文件 os.execute("nginx -s reload") end update_ssl_cert()
Nginx 構成ファイルを更新します。
Nginx 構成ファイルを編集し、Lua のエントリを追加します。脚本。デフォルトの Nginx 構成ファイル「/etc/nginx/nginx.conf」を開き、「http」モジュールの場所を見つけて、その中に次のコードを追加します。
lua_shared_dict ssl_cert_cache 10m; lua_ssl_trusted_certificate /etc/ssl/certs/ca-certificates.crt; lua_ssl_verify_depth 3; init_by_lua_block { require "ssl_cert_updater" }
このコードは、Lua スクリプトをロードし、初期化してください。
スケジュールされたタスクを構成する:
Crontab またはその他のスケジュールされたタスク ツールを使用して、Lua スクリプトを定期的に実行します。 Crontab ファイルを編集します:
crontab -e
次の行を追加します (例は毎週月曜日の午前 2 時に実行します):
0 2 * * 1 lua /path/to/ssl_cert_updater.lua
テスト更新:
さて、 Lua スクリプトを手動で実行して、更新が適切に機能しているかどうかを確認できます:
lua /path/to/ssl_cert_updater.lua
要約:
上記の手順を通じて、Nginx の SSL 証明書の動的読み込みと更新を正常に実装しました。 。証明書の有効期限が切れたり、更新が必要になったりすると、スクリプトは自動的に最新の証明書ファイルをダウンロードし、Nginx サーバーをリロードします。これにより、Web サイトのダウンタイムが回避され、ユーザーデータが安全に保たれます。 Lua スクリプトとスケジュールされたタスクを使用することで、証明書の更新を自動化し、Web サイトの安定性と可用性を向上させることができます。
この記事では基本的な例のみを示しており、具体的な実装計画は実際のニーズに基づいてさらに最適化できることに注意してください。同時に、証明書のダウンロード元 URL が信頼できるものであり、サーバーのセキュリティが適切に評価され、保護されていることを確認してください。
以上がNginx を使用して SSL 証明書を動的にロードおよび更新する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。