PR

nginxでLet’s Encryptを設定する手順

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です。

今回はここまでです。最後までお読みいただきありがとうございました。