Let's Encrypt を使った HTTPS の設定

Django × VPS デプロイ入門

日付:2025年2月19日

Django アプリの通信を安全にするため、Let's Encrypt を使って Nginx に無料の SSL 証明書を導入し、HTTPS を有効化する手順を解説します。

目 次

1. HTTPS の必要性

ウェブサイトを安全に運営するためには、HTTP ではなく HTTPS(SSL/TLS) を使用することが推奨されます。

HTTPS のメリット

  • 通信の暗号化:ユーザーとサーバー間の通信を暗号化し、盗聴を防ぐ。
  • Google 検索での優遇:HTTPS 対応サイトは SEO でも有利。
  • ブラウザの警告回避:HTTP のままだと「安全でないサイト」と表示される。

本記事では、Let's Encrypt を使って無料で SSL 証明書を導入し、HTTPS を有効化する手順 を解説します。

2. Certbot のインストール

Let's Encrypt の SSL 証明書を取得・管理するために、Certbot をインストールします。

BASH
apt update && apt install -y certbot python3-certbot-nginx

インストール後、バージョン確認。

BASH
certbot --version

出力例

certbot 1.x.x

3. SSL 証明書の取得と設定

(1) 証明書の取得

以下のコマンドで Let's Encrypt から証明書を取得し、Nginx に自動設定します。

BASH
certbot --nginx -d yourdomain.com -d www.yourdomain.com

解説

  • --nginx → Nginx の設定を自動更新
  • -d yourdomain.com → 証明書を取得するドメイン(複数可)

(2) 証明書の更新を自動化

Let's Encrypt の証明書は 90 日ごとに更新 する必要があります。

以下のコマンドで手動更新可能。

BASH
certbot renew --dry-run

また、自動更新のために cron に追加。

BASH
crontab -e

以下の行を追加。

0 3 * * * certbot renew --quiet

毎日午前 3 時に自動更新を実行

4. Nginx の設定を HTTPS に変更

証明書の取得後、Nginx の設定を修正。

BASH
nano /etc/nginx/sites-available/myproject

以下のように HTTPS 用の設定を追加。

NGINX
server { listen 80; server_name yourdomain.com www.yourdomain.com; return 301 https://$host$request_uri; } server { listen 443 ssl; server_name yourdomain.com www.yourdomain.com; ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem; include /etc/letsencrypt/options-ssl-nginx.conf; ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; location / { proxy_pass http://unix:/home/myuser/django_project/gunicorn.sock; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }

変更点

  • listen 443 ssl; → HTTPS ポートを有効化
  • ssl_certificate / ssl_certificate_key → Let's Encrypt の証明書を指定
  • return 301 https://$host$request_uri; → HTTP を HTTPS にリダイレクト

(3) Nginx を再起動

BASH
systemctl restart nginx

5. 動作確認

ブラウザで https://yourdomain.com にアクセスし、安全な接続(鍵マーク) が表示されることを確認。

6. まとめ

Let's Encrypt を使うことで、無料で HTTPS 対応の Django サーバー を構築できます。