Let’s Encryptで無料SSL証明書を取得する方法

Webサイトのセキュリティを強化するなら、Let’s Encryptで無料SSL証明書を取得してください。この方法でHTTPS化すれば、Google検索ランキングの向上だけでなく、ユーザーからの信頼獲得にも直結します。サーバー管理者なら誰でも利用できるこの仕組みで、わずか数分でSSL証明書を発行できます。
本記事では、Let’s Encryptの基本概念から、実際の取得手順、さらには自動更新の設定まで、実務で使えるノウハウを余すところなく解説します。Apache、Nginx、さらにはクラウド環境(AWS、GCP)での設定方法まで網羅しているので、あなたの環境に合わせてすぐに実践できます。それでは、具体的な手順に進みましょう。
目次
- Let’s Encryptとは何か?その仕組みとメリット
- 事前準備:Let’s Encryptを利用するための条件
- Certbotのインストール手順(Apache/Nginx/OS別)
- ApacheサーバーでSSL証明書を発行する
- NginxサーバーでSSL証明書を発行する
- SSL証明書の自動更新を設定する
- クラウド環境(AWS Lightsail/GCP)でのSSL設定
- よくあるトラブルとその解決方法
- Let’s Encryptに関するFAQ
- まとめ:Let’s EncryptでWebサイトを安全に
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. ドメインの所有権を証…
Let’s Encryptは、ドメインの所有者だけが証明書を発行できる仕組みになっています。このため、以下のいずれかの方法でドメインの所有権を証明する必要があります。
- DNS-01チャレンジ:ドメインのDNSレコードに特定のTXTレコードを追加する
- HTTP-01チャレンジ:Webサーバー上に特定のファイルを配置する
- TLS-ALPN-01チャレンジ:TLS接続を使ってチャレンジを実行する(主に専用サーバー向け)
一般的なWebサイトでは、HTTP-01チャレンジが最も簡単に利用できます。この方法では、Webサーバー(ApacheやNginx)が動作している必要があります。
2. 公開されたWebサー…
Let’s Encryptのサーバーは、発行しようとしているドメインに対してHTTP/HTTPS接続を試みます。このため、以下の条件を満たす必要があります。
- ポート80(HTTP)またはポート443(HTTPS)で外部からアクセス可能
- ファイアウォールやセキュリティグループで、これらのポートが開放されている
- サーバーのグローバルIPアドレスが固定されている(動的IPの場合はDNS-01チャレンジを利用)
3. 対応するOSとソフト…
Let’s Encryptの公式クライアントであるCertbotは、以下のOSで動作します。
| OS | 対応バージョン |
|---|---|
| Ubuntu | 20.04 LTS / 22.04 LTS / 24.04 LTS |
| Debian | 10 (Buster) / 11 (Bullseye) / 12 (Bookworm) |
| CentOS / RHEL | 7 / 8 / 9 |
| AlmaLinux | 8 / 9 |
| Rocky Linux | 8 / 9 |
| Fedora | 38 / 39 |
| macOS | 12 (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/Deb…
UbuntuやDebianでは、公式リポジトリからCertbotをインストールできます。
# 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/RHE…
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へのインス…
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を使っ…
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が自動的に以下の処理を行います。
- ドメインの所有権を証明するためのHTTP-01チャレンジを実行
- Let’s EncryptのサーバーからSSL証明書をダウンロード
- Apacheの設定ファイルを自動的に編集してHTTPS化
- 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/lets Webサイトのセキュリティを強化するなら、Let's Encryptで無料SSL証明書を取得してください。この方法でHTTPS化すれば、Google検索ランキングの向上だけでなく、ユーザーからの信頼獲得にも直結します。サーバー管理者なら誰でも利用できるこの仕組みで、わずか数分でSSL証明書を発行できます。 本記事では、Let's Encryptの基本概念から、実際の取得手順、さらには自動更新の設定まで、実務で使えるノウハウを余すところなく解説します。Apache、Nginx、さらにはクラウド環境(AWS、GCP)での設定方法まで網羅しているので、あなたの環境に合わせてすぐに実践できます。それでは、具体的な手順に進みましょう。
目次




