LinuCレベル3 セキュリティスペシャリスト セキュアプロトコルによる各種機能の実装 問17
セキュアプロトコルによる各種機能の実装/Let's Encrypt による証明書管理certbot certonly --webroot で取得した証明書をnginxで使っている。定期実行している certbot renew で証明書ファイルは新しくなったが、nginxは古い証明書を返し続けていた。証明書が実際に更新されたときだけnginxに読み込み直させる方法として適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル3 セキュリティスペシャリストの出題範囲「セキュアプロトコルによる各種機能の実装」に対応。実際の試験問題ではありません)
- Acertbot renew --pre-hook "systemctl reload nginx" を定期実行する
- Bcertbot renew --deploy-hook "systemctl reload nginx" を定期実行する
- Ccertbot renew --force-renewal を毎日実行し、常に新しい証明書へ置き換える
- Dcertbot renew --reuse-key を定期実行し、同じ秘密鍵のまま証明書を更新させる
正解:B
解説
certbot certonly で取得した証明書は、更新されてもWebサーバーの設定には触れないため、Webサーバーに読み込み直させる必要があります。--deploy-hook に指定したコマンドは、証明書の更新に成功したときだけ、その証明書ごとに実行されます。同じ働きのスクリプトを /etc/letsencrypt/renewal-hooks/deploy/ に置く方法もあります。--pre-hook は更新を試みる前に実行されるため、読み込み直しても古い証明書のままです。
選択肢ごとの解説
- A誤り。--pre-hook は更新を試みる前に実行されるため、その時点で読み込み直してもnginxは古い証明書を使い続けます。
- B正しい。--deploy-hook は更新に成功したときだけ実行されるため、新しい証明書をnginxに読み込ませられます。
- C誤り。--force-renewal は期限に関係なく毎回更新させるため発行数の制限に触れやすく、nginxの読み込み直しも行いません。
- D誤り。--reuse-key は更新時に秘密鍵を作り直さない指定で、nginxに読み込み直させる働きはありません。