NginxでLet's Encryptを使って無料SSL/TLS証明書を設定する方法

NginxサーバーにLet's Encryptで無料SSL/TLS証明書を導入する手順を解説。certbotを使った取得・自動更新方法も紹介。

SSLTLSLet's Encrypt無料Nginxcertbot2026/5/25

はじめに

WebサイトをHTTPS化するためにはSSL/TLS証明書が必要です。有料の証明書もありますが、Let's Encryptを使えば無料で取得・運用できます。この記事では、NginxサーバーにLet's Encryptの証明書を設定する手順を、certbotを使って解説します。

前提条件

  • Ubuntu 20.04または22.04(他のディストリビューションでもほぼ同様)
  • Nginxがインストール済みで、ドメインがサーバーのIPアドレスを指していること
  • ポート80(HTTP)が外部からアクセス可能であること
  • 1. certbotのインストール

    certbotはLet's Encryptのクライアントツールです。以下のコマンドでインストールします。

    sudo apt update
    sudo apt install certbot python3-certbot-nginx
    

    2. 証明書の取得

    certbotを使って、Nginxプラグインで証明書を取得します。以下のコマンドを実行します。

    sudo certbot --nginx -d example.com -d www.example.com
    
  • -d オプションで証明書を取得するドメインを指定します。複数指定可能です。
  • 初回実行時はメールアドレスの入力と利用規約への同意が求められます。
  • certbotは自動的にNginxの設定を編集し、HTTPS化します。

    3. 自動更新の確認

    Let's Encryptの証明書は90日間有効です。certbotは自動更新の仕組みを提供しています。以下のコマンドでテストできます。

    sudo certbot renew --dry-run
    

    問題がなければ、実際の更新はシステムのタイマー(systemd)で自動実行されます。確認するには:

    sudo systemctl status certbot.timer
    

    4. 手動でNginx設定を編集する場合

    certbotの--nginxプラグインを使わずに、自分で設定ファイルを編集する方法もあります。

    証明書の取得(Webroot方式)

    sudo certbot certonly --webroot -w /var/www/html -d example.com
    

    Nginx設定ファイルの編集

    server {
        listen 443 ssl;
        server_name example.com;
    

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    # その他の設定 }

    server { listen 80; server_name example.com; return 301 https://$server_name$request_uri; }

    設定後、Nginxを再読み込みします。

    sudo nginx -t
    sudo systemctl reload nginx
    

    5. セキュリティ強化(オプション)

    より強固なSSL設定にするには、以下のような設定を追加します。

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    

    また、OCSP Staplingを有効にすることも推奨します。


    *この記事はArch Linux/btrfs/LUKs環境で実際に検証した内容を基にしています。セキュリティ設定は環境によって異なるため、本番環境への適用前に必ずテスト環境で検証してください。*

    まとめ

    Let's Encryptとcertbotを使えば、Nginxに無料でSSL/TLS証明書を導入できます。証明書の自動更新も設定されるため、運用の手間はほとんどありません。この機会にぜひHTTPS化を進めてください。