web100tips’s blog

webエンジニアが知っておくべきこと100を1日1投稿します

Let's Encryptで無料SSL証明書を取得・導入・自動更新する方法【完全ガイド】

 

Let's Encryptで無料SSL証明書を取得・更新する方法

本記事では、WebサイトをHTTPS化するために必要な無料SSL証明書をLet's Encryptで取得・導入・自動更新する方法について、初心者にもわかりやすく解説します。1時間で読み終わる内容で、Webエンジニアが知っておくべき基本と実践を網羅しています。

1. Let's Encryptとは?

  • 非営利団体によって運営されている無料の認証局(CA)
  • 誰でも無料でSSL/TLS証明書を取得できる
  • 自動化された証明書発行と更新が特徴

2. 利用のメリット

  • 無料で使える
  • HTTPS対応によりSEOやブラウザの信頼性向上
  • Certbotなどのツールで自動化が簡単
  • 90日ごとの更新も自動化で手間いらず

3. 証明書の種類

Let's Encryptで取得できる証明書はDV(Domain Validation)のみです。

4. 前提条件

  • 公開済みのドメインを所有している
  • Webサーバー(NginxやApache)が稼働している
  • サーバーにSSH接続できる

5. Certbotのインストール

# Ubuntu/Debian系
sudo apt update
sudo apt install certbot python3-certbot-nginx

6. SSL証明書の取得

# Nginx用(自動で設定ファイルも編集)
sudo certbot --nginx -d example.com -d www.example.com

Apacheの場合は --apache フラグを使用。

7. 証明書のファイルパス

  • /etc/letsencrypt/live/yourdomain.com/fullchain.pem(証明書本体)
  • /etc/letsencrypt/live/yourdomain.com/privkey.pem秘密鍵

8. 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;

  location / {
    proxy_pass http://localhost:3000;
  }
}

9. 自動更新の設定

Certbotはcronまたはsystemd timerで自動更新されます。

# 手動で更新チェック
sudo certbot renew --dry-run

10. HTTP→HTTPSリダイレクト

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

11. 証明書の期限と更新

  • Let's Encryptの証明書は有効期限が90日
  • 自動更新スクリプトがあれば更新忘れを防止可能

12. トラブルシューティング

  • ポート80や443が閉じている → ファイアウォール設定を確認
  • ドメインが正しくDNS設定されていない → Aレコードを確認
  • Webサーバー設定ミス → nginx -t で構文チェック

13. セキュリティ強化オプション

  • HSTSの有効化HTTPSのみ許可
  • OCSP Stapling:証明書の失効確認を高速化
  • secure headers:セキュリティ関連ヘッダーの追加

14. まとめ

  • Let's Encryptは無料・自動化・高信頼性
  • Certbotを使えば簡単に導入・更新できる
  • HTTPS化は現代Webの必須要件

15. 参考リンク