WebサイトのHTTPS化は、SEO・セキュリティの両面で必須です。以前に本ブログ内で、「無料のSSLサーバ証明書(Let’s Encrypt)を用いてホームページを常時SSL化する」で紹介しておりましたが、本記事では、nginxに設定する手順を解説します。
前提条件
- nginxがインストール済み
- ドメイン取得済み(DNS設定済み)
- サーバにrootまたはsudo権限あり
手順① Certbotのインストール
Let’s Encryptの証明書取得には「Certbot」を使用します。
# dnf install certbot python3-certbot-nginx
手順② nginxの設定確認
nginxのコンフィグに、以下のようにドメイン設定を実施します。
server {
listen 80;
server_name dassyi.com;
root /usr/share/nginx/html;
location /.well-known/acme-challenge {
root /var/www/html;
}
}
ここでは、Let’s Encrypt用のアクセス可能な領域(/.well-known/acme-challenge)を個別に定義しています。例えば、Basic認証があったり、このサーバにトップのURLからアプリケーションが動くような環境でも、上記のように設定しておけば、証明書の更新が可能になります。
設定後は以下のコマンドで反映します。
# nginx -t
# systemctl reload nginx
手順③ SSL証明書の取得(自動設定)
以下コマンドを実行して、証明書取得+nginx設定が自動で完了します。
# certbot certonly --webroot -w /var/www/html -d dassyi.com
途中で以下を聞かれます:
- メールアドレス入力
- 利用規約同意
私の場合は、あえて、「–nginx」オプションを使用せず、「–webroot」オプションで対応しています。理由は、nginxオプションを使用すると、nginxのコンフィグを勝手に書き加えられるためです。
手順④ 設定反映と動作確認
/etc/letsencrypt/live/dassyi.com/ 配下に、証明書が発行されているので、nginxのコンフィグに証明書のパスと、キーのパスを設定したのち、サービスを再読み込みします。
動作確認は、ブラウザで以下にアクセス:
https://dassyi.com
🔒マークが表示されれば成功です。
手順⑤ 自動更新の設定確認
Let’s Encryptの証明書は90日で期限切れになりますが、自動更新が設定されています。
# systemctl list-timers | grep certbot
以下のような表示が出ればOK👇
certbot.timer
もう一つ確認コマンドを実行します。
# certbot renew --dry-run
で問題なければOKです。
今回はここまでです。最後までお読みいただきありがとうございました。