※本記事にはプロモーション(広告)を含みます。

結論から言うと、Let’s EncryptのSSL証明書は費用0円・所要時間5〜10分でサーバー管理者なら誰でも取得できます。ドメインの所有権をHTTP-01またはDNS-01チャレンジで証明するだけで発行され、Certbotを使えばApache・Nginxへの組み込みと自動更新まで一括で完了します。この方法でHTTPS化すれば、Google検索ランキングの向上だけでなく、ユーザーからの信頼獲得にも直結します。

本記事では、Let’s Encryptの基本概念から、実際の取得手順、さらには自動更新の設定まで、実務で使えるノウハウを余すところなく解説します。Apache、Nginx、さらにはクラウド環境(AWS、GCP)での設定方法まで網羅しているので、あなたの環境に合わせてすぐに実践できます。それでは、具体的な手順に進みましょう。

この記事でわかること

  • 無料SSL証明書をLet’s Encrypt+Certbotで取得する具体的な手順(Apache/Nginx/Docker別)
  • 証明書の自動更新設定とクラウド環境(AWS Lightsail/GCP)での注意点
  • 2026年時点の最新動向:証明書の有効期間短縮(90日→45日)とその影響

目次


Let’s Encryptとは何か?その仕組みとメリット

Let’s Encryptは、非営利団体のInternet Security Research Group(ISRG)が運営する、無料で利用できるSSL/TLS証明書発行サービスです。2016年のサービス開始以来、世界中のWebサイトで採用されており、2024年6月現在で3億件以上のアクティブな証明書が発行されています(出典: Let’s Encrypt公式統計)。

Let’s Encryptの最大の特徴は、以下の3点です。

特徴詳細
無料商用・非商用を問わず、完全に無料でSSL証明書を発行可能
自動化Certbotなどのツールを使えば、証明書の発行・更新を自動化できる
信頼性主要なブラウザ(Chrome、Firefox、Safariなど)でデフォルトで信頼される

従来のSSL証明書は、年間数万円から数十万円の費用がかかるケースが多かったですが、Let’s Encryptの登場により、誰でも簡単にHTTPS化できるようになりました。特に個人ブログや中小企業のWebサイトにとって、コスト面での障壁がなくなったことは大きなメリットです。

Let’s Encryptの証明書は、90日間有効で自動更新が可能です。このため、手動で更新する手間がかからず、セキュリティを維持しやすい仕組みになっています。次に、Let’s Encryptを利用するための前提条件を確認しましょう。


事前準備:Let’s Encryptを利用するための条件

Let’s EncryptでSSL証明書を発行するには、以下の条件を満たす必要があります。

1. ドメインの所有権を証明するためのHTTP-01チャレンジを実行

Let’s Encryptは、ドメインの所有者だけが証明書を発行できる仕組みになっています。このため、以下のいずれかの方法でドメインの所有権を証明する必要があります。

  • DNS-01チャレンジ:ドメインのDNSレコードに特定のTXTレコードを追加する
  • HTTP-01チャレンジ:Webサーバー上に特定のファイルを配置する
  • TLS-ALPN-01チャレンジ:TLS接続を使ってチャレンジを実行する(主に専用サーバー向け)

一般的なWebサイトでは、HTTP-01チャレンジが最も簡単に利用できます。この方法では、Webサーバー(ApacheやNginx)が動作している必要があります。ApacheとNginxのどちらを使うか迷っている場合は、NginxとApacheの徹底比較が判断の参考になります。

2. 公開されたWebサーバーの外部到達性

Let’s Encryptのサーバーは、発行しようとしているドメインに対してHTTP/HTTPS接続を試みます。このため、以下の条件を満たす必要があります。

  • ポート80(HTTP)またはポート443(HTTPS)で外部からアクセス可能
  • ファイアウォールやセキュリティグループで、これらのポートが開放されている
  • サーバーのグローバルIPアドレスが固定されている(動的IPの場合はDNS-01チャレンジを利用)

3. 対応するOS・サーバーソフト一覧

Let’s Encryptの公式クライアントであるCertbotは、以下のOSで動作します。

OS対応バージョン
Ubuntu20.04 LTS / 22.04 LTS / 24.04 LTS
Debian10 (Buster) / 11 (Bullseye) / 12 (Bookworm)
CentOS / RHEL7 / 8 / 9
AlmaLinux8 / 9
Rocky Linux8 / 9
Fedora38 / 39
macOS12 (Monterey) 以降

また、Webサーバーとして以下のソフトウェアがサポートされています。

  • Apache(mod_sslが有効な状態)
  • Nginx
  • その他のWebサーバー(Caddy、H2Oなど)

これらの条件を満たしているか確認したら、次はCertbotのインストール手順に進みましょう。


Certbotのインストール手順(Apache/Nginx/OS別)

Let’s Encryptの証明書を発行するには、公式クライアントのCertbotを使用します。Certbotは、証明書の発行・更新・設定を自動化するツールで、ApacheやNginxと連携して簡単にHTTPS化できます。

以下では、主要なOSとWebサーバーごとのインストール手順を解説します。

1. Ubuntu/DebianへのCertbotインストール手順

UbuntuやDebianでは、公式リポジトリからCertbotをインストールできます。なお、これらの作業はサーバーへSSHでログインして行います。安全な接続方法はSSH公開鍵認証の設定を参照してください。

# Ubuntu 22.04 LTS / 24.04 LTSの場合
sudo apt update
sudo apt install -y certbot

# Debian 12 (Bookworm)の場合
sudo apt update
sudo apt install -y certbot

Apacheと連携させる場合は、以下のコマンドでプラグインをインストールします。

sudo apt install -y python3-certbot-apache

Nginxと連携させる場合は、以下のコマンドを実行します。

sudo apt install -y python3-certbot-nginx

2. CentOS/RHELでdnfでEPEL有効化しCertbotを導入

RHEL系のOSでは、EPELリポジトリを有効化してからCertbotをインストールします。

# EPELリポジトリを有効化
sudo dnf install -y epel-release

# Certbotをインストール
sudo dnf install -y certbot

# Apacheプラグインをインストール
sudo dnf install -y python3-certbot-apache

# Nginxプラグインをインストール
sudo dnf install -y python3-certbot-nginx

3. macOSへのインストール手順(Homebrew編

macOSでは、Homebrewを使ってCertbotをインストールできます。

# Homebrewをインストール(まだの場合)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# Certbotをインストール
brew install certbot

# Apacheプラグインをインストール
brew install certbot-apache

# Nginxプラグインをインストール
brew install certbot-nginx

4. Dockerを使った証明書取得の手順

Dockerが利用できる環境であれば、コンテナ経由でCertbotを実行できます。

# Certbotコンテナを起動(Apache向け)
docker run -it --rm --name certbot \
  -v "/etc/letsencrypt:/etc/letsencrypt" \
  -v "/var/lib/letsencrypt:/var/lib/letsencrypt" \
  certbot/certbot certonly --apache

# Certbotコンテナを起動(Nginx向け)
docker run -it --rm --name certbot \
  -v "/etc/letsencrypt:/etc/letsencrypt" \
  -v "/var/lib/letsencrypt:/var/lib/letsencrypt" \
  certbot/certbot certonly --nginx

Certbotのインストールが完了したら、次は実際にSSL証明書を発行してみましょう。


ApacheサーバーでSSL証明書を発行する

ApacheサーバーでLet’s EncryptのSSL証明書を発行する手順を解説します。この手順では、HTTP-01チャレンジを使ってドメインの所有権を証明します。

1. Apacheの動作確認とバーチャルホスト設定を確認

まず、Apacheが正常に動作していることを確認します。以下のコマンドでApacheのステータスを確認します。

sudo systemctl status apache2   # Ubuntu/Debian
sudo systemctl status httpd     # RHEL系

Apacheが起動していない場合は、以下のコマンドで起動します。

sudo systemctl start apache2    # Ubuntu/Debian
sudo systemctl start httpd      # RHEL系
sudo systemctl enable apache2   # 自動起動設定
sudo systemctl enable httpd     # 自動起動設定

次に、Apacheのバーチャルホスト設定を確認します。以下のコマンドで、設定ファイルの一覧を表示します。

# Ubuntu/Debian
sudo ls /etc/apache2/sites-available/

# RHEL系
sudo ls /etc/httpd/conf.d/

例えば、example.com.confというバーチャルホスト設定ファイルがある場合、以下のコマンドで内容を確認します。

sudo cat /etc/apache2/sites-available/example.com.conf

このファイルには、以下のような基本的な設定が含まれている必要があります。

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

この設定が正しくない場合は、編集して保存します。

2. Certbotを使ってSSL証明書

Certbotを使ってSSL証明書を発行するには、以下のコマンドを実行します。

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

このコマンドでは、以下のオプションを指定しています。

  • --apache:Apache用のプラグインを使用
  • -d example.com:発行対象のドメイン(example.com)
  • -d www.example.com:発行対象のサブドメイン(www.example.com)

コマンドを実行すると、Certbotが自動的に以下の処理を行います。

  1. ドメインの所有権を証明するためのHTTP-01チャレンジを実行
  2. Let’s EncryptのサーバーからSSL証明書をダウンロード
  3. Apacheの設定ファイルを自動的に編集してHTTPS化
  4. Webサーバーを再起動して設定を反映

処理が完了すると、以下のようなメッセージが表示されます。

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/example.com/privkey.pem
 - Your cert will expire on 2024-09-15. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. A directory like
   /etc/letsencrypt will be created in your home directory if you
   didn't use the default config directory.

これで、SSL証明書の発行は完了です。次に、Apacheの設定が正しくHTTPS化されているか確認しましょう。

3. HTTPS化の確認

ブラウザでhttps://example.comにアクセスし、以下の点を確認します。

  • URLの横に南京錠アイコンが表示されている
  • アドレスバーに「保護された通信」と表示されている
  • SSL Labs(https://www.ssllabs.com/ssltest/)でテストした際に「A」以上の評価が得られる

また、HTTPでアクセスした場合に自動的にHTTPSにリダイレクトされるように設定されているか確認します。以下のコマンドで、Apacheの設定ファイルを確認します。

sudo cat /etc/apache2/sites-available/example.com-le-ssl.conf

このファイルには、HTTPS用の設定が自動的に追加されているはずです。例えば、以下のような設定が含まれています。

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
</VirtualHost>
</IfModule>

この設定でHTTPS通信が有効になっていれば、Apacheでの無料SSL証明書取得は完了です。続いてNginxサーバーでの発行手順を確認しましょう。

NginxサーバーでSSL証明書を発行する

Let’s Encryptを利用してNginxサーバーにSSL証明書を発行するには、Certbotと呼ばれる公式クライアントツールを使用します。Certbotは自動的に証明書の発行・更新・Nginxの設定変更まで行ってくれるため、手動での設定ミスを防ぎながら安全なHTTPS通信を実現できます。まずはCertbotをインストールし、Nginxとの連携設定を行うことから始めましょう。

証明書発行時には、ドメイン所有者であることを証明するために、Let’s Encryptの認証局(CA)がHTTP-01チャレンジと呼ばれる方法で検証を行います。このプロセスでは、一時的に特定のパスにアクセスできるようにサーバーを設定する必要があります。Certbotは自動的にこの設定を行い、検証が完了すると証明書を発行します。発行された証明書は通常、/etc/letsencrypt/live/[ドメイン名]/ディレクトリに保存されます。

Nginxの設定ファイルでは、SSL証明書と秘密鍵のパスを指定し、暗号化設定を有効にします。以下のポイントに注意して設定を行ってください。

  • SSLプロトコルのバージョンはTLS 1.2以上を使用する

DNS-01チャレンジでワイルドカード証明書を取得する

ここまで解説したHTTP-01チャレンジは、Webサーバーが外部から80番ポートで到達できることが前提です。次のようなケースではHTTP-01が使えないため、DNSレコードで所有権を証明するDNS-01チャレンジを使います。

  • Webサーバーを公開していない(社内システム・APIサーバーなど)
  • ワイルドカード証明書(*.example.com)を取得したい ※ワイルドカード証明書はDNS-01でのみ発行できます
  • サブドメインが多く、1件ずつHTTP-01で検証するのが現実的でない

1. DNSプロバイダーの対応プラグインを確認する

DNS-01チャレンジを自動化するには、利用中のDNSプロバイダーに対応したCertbotプラグインが必要です。代表的な対応プロバイダーは次のとおりです。

  • Cloudflare
  • Amazon Route 53
  • Google Cloud DNS
  • DigitalOcean
  • Azure DNS

最新の対応状況はCertbot公式ドキュメントのDNSプラグイン一覧で確認してください。

2. DNSプラグインをインストールする

Cloudflareを使う場合の例です。Debian/Ubuntu系ではパッケージ名の先頭に python3- が付く点に注意してください。

sudo apt install python3-certbot-dns-cloudflare

3. APIトークンを発行して認証ファイルを作成する

  1. Cloudflareダッシュボードで My Profile > API Tokens > Create Token を開きます。
  2. 対象ゾーンに対して Zone:Zone:Read と Zone:DNS:Edit の権限を持つトークンを作成します。
  3. 発行したトークンを認証ファイルに保存します。
# /etc/letsencrypt/cloudflare.ini
dns_cloudflare_api_token = "発行したAPIトークン"

APIトークンを使う場合のキー名は dns_cloudflare_api_token です。旧方式のGlobal API Keyを使う場合のみ dns_cloudflare_email と dns_cloudflare_api_key の組み合わせになります。

認証ファイルには必ずパーミッションを設定します。

sudo chmod 600 /etc/letsencrypt/cloudflare.ini

4. Certbotを実行して証明書を取得する

sudo certbot certonly --dns-cloudflare --dns-cloudflare-credentials /etc/letsencrypt/cloudflare.ini -d example.com -d "*.example.com"

DNSレコードの伝播に時間がかかる環境では、--dns-cloudflare-propagation-seconds で待機時間を延ばすと検証失敗を減らせます。

DNS-01を使うときの注意点

DNS-01チャレンジでは、DNSレコードを書き換える権限をCertbotに渡すことになります。APIトークンが漏洩するとDNSレコードを改ざんされる恐れがあるため、権限は対象ゾーンの最小限に絞り、認証ファイルのパーミッション管理を徹底してください。

SSL証明書の自動更新を設定する

Let’s EncryptのSSL証明書は有効期限が90日間と短いため、定期的な更新が必要です。手動で更新することも可能ですが、サーバーの運用負荷を軽減するために自動更新を設定することをおすすめします。自動更新を有効にすることで、証明書の期限切れを防ぎ、常に暗号化通信を維持できます。

自動更新の設定には、主に2つの方法があります。1つは、Let’s Encryptが提供するCertbotを使用する方法です。Certbotには自動更新機能が組み込まれており、設定ファイルを編集するだけで簡単に有効化できます。もう1つは、システムの cron や systemd タイマーを利用して更新スクリプトを定期実行する方法です。いずれの方法でも、更新プロセスが正常に動作するか事前にテストを行うことが重要です。

自動更新を設定する際は、以下の点に注意してください。まず、サーバーの時刻が正確に同期されていることを確認します。時刻がずれていると、証明書の更新に失敗する可能性があります。また、更新に必要なポート(通常は80番または443番)が開放されていることも確認しておきましょう。さらに、更新スクリプトの実行権限やログの確認方法についても事前に検討しておくと、トラブル発生時に迅速に対応できます。

2026年最新情報:証明書の有効期間が90日→45日へ段階的に短縮

Let’s Encryptは2026年2月、証明書の標準有効期間を現行の90日から、今後2年ほどかけて段階的に45日(中間ステップとして64日)へ短縮していく方針を発表しました(出典: Let’s Encrypt公式ブログ)。これにより証明書の更新頻度は実質2倍になりますが、発行のレート制限自体は変更されません。Let’s Encryptの発行レート制限は「登録ドメインあたり週50件」が上限ですが、ARI(ACME Renewal Info)に対応したクライアントによる更新はこの制限の対象外(更新専用の「重複証明書:週5件」の枠で扱われる)です。Certbotの最新版はARIに対応しているため、通常の自動更新運用であれば影響を受けません。有効期間短縮に備え、更新スクリプトが正しく動作しているかをcertbot renew --dry-runで定期的に確認しておくことをおすすめします。

クラウド環境(AWS Lightsail/GCP)でのSSL設定

クラウド環境におけるLet’s Encryptを活用したSSL証明書の設定は、主にWebサーバーソフトウェアとDNS設定に依存します。AWS LightsailやGoogle Cloud Platform(GCP)では、サーバーインスタンスの構築時に「静的IPアドレス」を割り当てることが推奨されます。静的IPを使用することで、証明書発行時のドメイン所有確認が安定し、DNS設定の変更に伴う不具合を回避しやすくなります。また、一部のクラウドサービスでは、独自のSSL証明書管理機能(例:AWS Certificate Manager)が提供されていますが、Let’s Encryptを利用することでコストを抑えつつ、広く認知された信頼性の高い証明書を導入できます。

Let’s Encryptの証明書発行には、通常「DNS-01チャレンジ」または「HTTP-01チャレンジ」のいずれかを選択します。クラウド環境では、Webサーバー(例:ApacheやNginx)が稼働しているポート80(HTTP)またはポート443(HTTPS)に対して、外部からアクセス可能な状態を維持する必要があります。特にGCPのような環境では、ファイアウォールルールでこれらのポートがブロックされていないか確認し、必要に応じて許可リストに追加します。AWS Lightsailの場合は、デフォルトでポート80と443が開放されているため、設定の手間が比較的少ない傾向にあります。

証明書の自動更新も重要なポイントです。Let’s Encryptの証明書は90日間で有効期限が切れるため、定期的な更新が必要です。クラウド環境では、cronやシステムタイマー(例:systemd timer)を活用して、自動更新スクリプトを実行することが一般的です。例えば、Certbotを使用した自動更新コマンドは以下のような形式で設定できます。

  • AWS Lightsail/GCP共通の例: sudo certbot renew --quiet --no-self-upgrade --post-hook "systemctl reload nginx" (Nginxを使用する場合の例。Apacheの場合はapache2やhttpdに置き換えます)

よくあるトラブルとその解決方法

Let’s EncryptでSSL証明書を取得する際に発生しやすいトラブルの多くは、ドメインの所有確認やサーバー設定に関連しています。例えば、DNSの設定ミスによりドメイン所有確認が失敗するケースが少なくありません。この場合、まずはDNSレコードが正しく設定されているかを確認しましょう。具体的には、AレコードやCNAMEレコードが正しいIPアドレスやサブドメインを指しているか、また、DNSプロパイダー側でTTL値が適切に設定されているかを確認します。

また、サーバーのファイアウォールやポート設定によって、Let’s Encryptの認証局(ACMEサーバー)との通信がブロックされることがあります。特に、ポート80(HTTP)や443(HTTPS)が開放されていることを確認してください。ファイアウォールの設定を見直す際には、一時的に設定を緩和して動作確認を行う方法もありますが、本番環境ではセキュリティリスクを考慮した上で慎重に設定を行いましょう。

さらに、証明書の自動更新に失敗するケースも多く報告されています。Let’s Encryptの証明書は90日間で有効期限が切れるため、自動更新の設定が必須です。自動更新が機能しない場合は、cronジョブやsystemdタイマーなどのスケジューラが正しく設定されているか、また、証明書の更新に必要な権限が与えられているかを確認します。以下は、一般的な自動更新の設定例です。

  • 定期的な証明書更新の確認コマンド(例): sudo certbot renew --dry-run

Let’s Encryptに関するFAQ

Let’s Encryptの利用にあたって、多くの方が抱く疑問や実務上のポイントについて、一般的な回答をまとめました。不明点の解消にお役立てください。

Q1. Let’s Encryptで取得したSSL証明書の有効期限はどれくらいですか?

Let’s Encryptで発行されるSSL証明書の有効期限は90日間です。このため、定期的な更新が必要となります。更新は自動化ツール(例:Certbot)を使用することで、手間をかけずに実施できます。更新プロセスでは、ドメインの所有確認が再度行われるため、DNS設定やWebサーバーの設定に注意が必要です。詳細は公式ドキュメントの「証明書の有効期限と更新」をご確認ください。

Q2. Let’s Encryptの証明書を自動更新する方法はありますか?

Let’s Encryptの証明書は90日間で失効するため、自動更新の仕組みを導入することが推奨されます。Certbotなどのツールを使用すると、定期的な更新タスクをcronジョブやsystemdタイマーとして設定できます。更新時には、ドメインの所有確認が自動で行われるため、事前にDNSやWebサーバーの設定が正しく行われていることを確認しておく必要があります。詳細は公式ドキュメントの「自動更新の設定」を参照してください。

Q3. Let’s Encryptの証明書を使用する際の注意点はありますか?

Let’s Encryptの証明書は無料で利用できる一方で、一部の古いブラウザやデバイスではサポートされていない場合があります。特に、Windows XPや古いAndroid端末など、古いOSでは証明書の検証に失敗することがあります。また、サブドメインを含むワイルドカード証明書を発行する場合は、DNS-01チャレンジを使用する必要があります。利用環境に応じた互換性の確認が重要です。

Q4. Let’s Encryptで発行した証明書を使用する際のトラブルシューティングはどうすればいいですか?

Let’s Encryptの証明書に関するトラブルの多くは、ドメインの所有確認やサーバー設定に起因します。例えば、DNS設定が正しく反映されていない場合や、Webサーバー(Apache/Nginx)の設定が不適切な場合にエラーが発生します。トラブル発生時は、Certbotのログ(例:/var/log/letsencrypt/)を確認し、エラーメッセージに基づいて原因を特定します。また、公式フォーラムやコミュニティでの情報共有も有効です。

まとめ:Let’s EncryptでWebサイトを安全に

Let’s Encryptを活用することで、コストを抑えつつWebサイトのセキュリティを強化できることが分かりました。無料でSSL/TLS証明書を発行できるだけでなく、自動更新にも対応しているため、手動での管理負担が軽減されます。特に個人サイトや中小規模のWebサイトにおいて、手軽に暗号化通信を導入できる点が大きなメリットです。また、証明書の発行や更新は、Certbotなどのツールを使うことで簡単に行えるため、技術的なハードルも低くなっています。HTTPS化と併せて不正アクセス検知の基本と仕組みも押さえておくと、Webサイト全体のセキュリティ水準を引き上げられます。

一方で、Let’s Encryptの証明書は有効期間が90日間と短いため、定期的な更新が必要です。しかし、自動化ツールを活用すればこのプロセスも自動化できるため、運用面での負担は最小限に抑えられます。Webサイトのセキュリティを向上させるためには、Let’s Encryptをはじめとする信頼性の高い認証局を活用することが重要です。今後もセキュリティ対策の一環として、暗号化通信の導入を検討してみてはいかがでしょうか。

【編集・制作ポリシー】
本記事はInfra Academy編集部が各ベンダー公式ドキュメント・エンジニア監修をもとに作成しています。インフラ・クラウド構築は環境により異なります。本番環境への適用前に必ずテストを実施してください。情報の正確性には万全を期していますが、最新情報は各公式ドキュメントをご確認ください。 編集ポリシーはこちら
ABOUT ME
たから
フリーランスIT講師/エンジニア。 ◆経験:IT講師/インフラエンジニア/PM/マネジメント/採用/運用・保守・構築・設計 ◆取得資格:CCNA/CCNP/LPIC-1/AZ-900//サーティファイC言語/情報処理技術者 ◆サイドビジネス:アパレル事業/複数のWEBメディアを運営