【完全ガイド】Let’s EncryptでサイトをHTTPS化する手順|certbot導入から自動更新まで

Let's EncryptでサイトをHTTPS化する完全ガイドのアイキャッチ画像 Linux
Let's Encrypt HTTPS化 完全ガイド

※本記事にはアフィリエイト広告(PR)を含みます。

この記事は、無料のSSL証明書「Let’s Encrypt」を使って、あなたのサイトをHTTPS化する手順を1本で解説する完全ガイドです。当ブログに分散していた古い記事(certbot-autoなど現在は廃止された方式)を、2026年7月時点の現行手順(certbot+systemdタイマー自動更新)に全面的に書き換えて統合しました。

この記事で分かること
Let’s Encryptの基礎/certbotの現行インストール方法/Nginx・Apacheでの証明書取得/自動更新(systemdタイマー)/HTTP/2化とセキュリティ強化(A+)/常時HTTPS・www正規化のリダイレクト

Let’s Encryptとは

Let’s Encryptは、無料でSSL/TLS証明書を発行できる認証局(CA)です。ドメイン認証(DV)型で、主要ブラウザに信頼されています。証明書の有効期間は90日と短く、近年さらに短縮の方向にあるため、自動更新が前提です。マルチドメインにも対応します。

前提条件

(1) Webサーバー(Nginx または Apache)が稼働している(未構築の場合はサーバー構築ガイドを参照)。(2) 独自ドメインのDNS(Aレコード等)がサーバーのIPを向いている。(3) ファイアウォールで 80/443 が開いている。

STEP1:certbot をインストールする(現行手順)

【重要・変更点】かつて使われていた certbot-auto / letsencrypt-auto廃止されました(当ブログの旧記事もこの方式でした)。現在は次のいずれかで導入します。

方法A:snap(EFF推奨・多くのsystemd系ディストリで共通)

sudo snap install core; sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot

方法B:OSパッケージ

# Amazon Linux 2023 / RHEL系(EPELが必要な場合あり)
sudo dnf install -y certbot python3-certbot-nginx
# Ubuntu 24.04
sudo apt install -y certbot python3-certbot-nginx

Apacheを使う場合は python3-certbot-apache を入れます。

STEP2:証明書を取得する

Nginxの場合(設定の書き換えとHTTPSリダイレクトまで自動でやってくれます):

sudo certbot --nginx -d example.com -d www.example.com

Apacheの場合

sudo certbot --apache -d example.com -d www.example.com

初回はメールアドレスと規約同意を対話で入力します。複数ドメインは -d を並べます。証明書は /etc/letsencrypt/live/ドメイン/ に保存されます。

STEP3:自動更新(現在はほぼ自動)

現行のcertbotは、インストール時にsystemdタイマー(certbot.timer)を自動登録します。手動でcronを組む必要はありません。動作確認は次のとおりです。

systemctl list-timers | grep certbot   # タイマー確認
sudo certbot renew --dry-run           # 更新のテスト実行

旧手順との違い:以前は croncertbot-auto renew(Webサーバー停止→更新→起動)を手動で設定していましたが、現在は不要です。証明書の有効期間短縮の流れもあり、自動更新は必須と考えてください。

STEP4:HTTP/2化とセキュリティ強化(A+を目指す)

HTTP/2は複数リクエストを同時処理できる高速なプロトコルです。HTTPS環境で有効化します。あわせて古いプロトコルを無効化し、HSTSを付与すると評価(SSL Labs等)が上がります。

Nginx(例)

listen 443 ssl;
http2 on;                       # 新しい記法(旧: listen ... ssl http2;)
ssl_protocols TLSv1.2 TLSv1.3;  # SSLv3/TLS1.0/1.1は無効
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

Apache(例)

Protocols h2 http/1.1
SSLProtocol -all +TLSv1.2 +TLSv1.3
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"

【要確認】推奨される暗号スイート(ssl_ciphers)は年々更新されます。最新の推奨値は「Mozilla SSL Configuration Generator」で生成して適用してください。

STEP5:常時HTTPS&www有無の統一(301リダイレクト)

http → https(Nginx):

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

Apache / .htaccessの場合:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

www有無もどちらかに統一(301)するとSEO上の重複を避けられます。

Windows Server / IIS の場合

WindowsのIIS環境でLet’s Encryptを自動化する手順は、別記事「Windows Server 2022 + IIS + AWS Route53でLet’s Encryptを完全自動化する」で詳しく解説しています。

まとめ

certbotの導入 → 証明書取得 → 自動更新の確認 → HTTP/2・セキュリティ強化 → 常時HTTPS化、までで無料のSSL/TLS対応が完了します。まずAWS EC2でWebサーバーを構築する完全ガイドでサーバーを用意してから本記事を進めるとスムーズです。

SSL/HTTPSを試すのに使えるサーバー

自分でcertbotを動かして試すなら、root権限で自由に設定できるVPSがおすすめです。

  • XServer VPS:高性能・コスパ重視。月1,000円台〜。
  • さくらのVPS:老舗で安定。学習・検証の定番。

SSL設定込みで手軽に始めたいなら、無料独自SSLが標準のレンタルサーバーも便利です。

※コマンド・仕様・推奨設定は変わることがあります。各公式ドキュメントで最新をご確認ください。

タイトルとURLをコピーしました