だから私は次のようなサーバー定義で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/key
からのシンボリックリンクを使用する場合、単に変更する場合はnginx
を再起動する必要がありますか?これらは新しい(更新された)証明書を指しますか?代わりはありますか?
はい、更新された証明書が正しい有効期限を表示するためにNginxをリロードする必要があると確信していますが、単純なキャッシュのクリアと参照でこれを表示できます。
または、cliを使用する場合は、常に古い信頼できるOpenSSLコマンドを使用できます。
echo | openssl s_client -connect your.domain.com:443 | openssl x509 -noout -dates
これにより、証明書の現在の日付がわかります。あなたの場合、ポートは443ではなく80になります。
多くの場合、nginx -s reload
は期待どおりに動作しません。多くのシステム(Debianなど)では、/etc/init.d/nginx reload
を使用する必要があります。
他のすべてが失敗した場合は、nginx -c /path/to/nginx.conf
を使用して、構成ファイルをいつでも直接指定できます。
SIGHUP
を受信すると、nginxは更新された構成を再読み込みします ログファイルを開いてSSL証明書を読み取るときに確認します 。その後、以前の構成に依存するワーカープロセスを正常にシャットダウンします。
Nginxが一部のSSL証明書を読み取れない場合は、古い構成を使用して実行を続けます。別の言い方をすれば、構成ファイルに対して何をしたかに関係なく、機能し続けてリクエストを処理します。壊れていても、ウェブサイトは開きます。
ですから、nginxに更新された証明書を表示させたい場合は、nginxを再起動する必要はなく、サーバーを数秒以上オフラインにするリスクがあります。次のことで十分です。
Sudo service nginx reload
Systemdがデフォルトで使用されている最新のディストリビューションでは、次のコマンドでnginxをリロードすることもできます。
Sudo systemctl reload nginx