セキュリティ証明書を更新したら、Nginxを再起動する必要がありますか?

セキュリティ証明書を更新したら、Nginxを再起動する必要がありますか?

そのため、次のサーバー定義を使用してSSLサポートnginxサーバーを設定しています。

server {
    listen :80;
    listen [::]:80;
    server_name example.org;
    root /foo/bar;

    ssl on;
    ssl_certificate /path/to/public/certificate;
    ssl_certificate_key /path/to/private/key;

    ...
}

わかります(誤字があればご了承ください)。

とにかく、私が気になったのは、証明書を更新した後にnginxを再起動せずに証明書をインストールする方法がありますか?

たとえば、現在の証明書を指すために/path/to/public/certificateシンボリックリンクを使用している場合は、新しい(更新された)証明書を指すように変更した場合は、まだ再起動する必要がありますか?他のオプションがありますか?/path/to/private/keynginx

答え1

必要です。リフレッシュ更新された証明書に正しい有効期限が表示されるようにNginx(両方の違いの説明については、以下のガイドラインとその他の説明を参照してください)リフレッシュそして再起動nginx)。

Nginxをリロードした後、単純なキャッシュを消去してブラウズすると、SSL証明書の更新された有効期限が表示されます。

あるいは、cliを好む場合は、いつでも以前の安定したOpenSSLコマンドを使用できます。

echo | openssl s_client -connect your.domain.com:443 | openssl x509 -noout -dates

これにより、証明書の現在の日付が表示されます。

あなたの場合、ポートは443ではなく80になります(OPは後で問題のポート80が実際に443でなければならないと指摘しましたが、Nginxは現在のポートでない限りHTTPまたはHTTPSに提供するすべてのポートをリッスンします)。使用)。

nginx -s reload期待通りに動作しないことが多いです。多くのシステム(Debianなど)では/etc/init.d/nginx reload

この回答を更新して明確に編集するには:

最新のシステムでは、またはをsystemd実行することもできます。systemctl reload nginxservice nginx reload

これらすべてreload方法が異なりますrestart実際、彼らは以下を送った。SIGHUPNginxに既存の接続を終了せずに設定を再ロードするように指示する信号です(これは完全な再起動時に発生し、ほぼ確実にユーザーに影響します)。

何らかの理由でNginxが証明書を再ロードしない場合はrestartそうすることができますがreload

到着再起動Nginx、単に実行するか、systemctl restart nginxNginxのないシステムで実行してください。systemdnginx -s stop && nginx -s start

何らかの理由で他のすべての方法が失敗した場合は、Nginx PIDを終了するといつでも直接使用できますnginx -c /path/to/nginx.conf

答え2

SIGHUPnginxは更新された設定を受け取り、再ロードします。ログファイルを開くとSSL証明書を読むと確認をクリックし、前の構成に従ってワーカープロセスを正常に終了します。

nginxが一部のSSL証明書を読み取れない場合は、以前の構成で実行し続けます。つまり、構成ファイルに対して何が行われても、依然として要求を実行して処理します。破損しても、あなたのウェブサイトは開いたままです。

したがって、nginxに更新された証明書を確認させるためにnginxを再起動する必要はなく、サーバーが数秒以上オフラインになる危険性はありません。これで十分です。

sudo service nginx reload

現在、デフォルトでsystemdを使用するほとんどのディストリビューションでは、次のようにnginxを再ロードすることもできます。

sudo systemctl reload nginx

関連情報