Webサイトのセキュリティを強化するなら、Let’s Encryptで無料SSL証明書を取得してください。この方法でHTTPS化すれば、Google検索ランキングの向上だけでなく、ユーザーからの信頼獲得にも直結します。サーバー管理者なら誰でも利用できるこの仕組みで、わずか数分でSSL証明書を発行できます。

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


目次


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対応バージョン
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/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が自動的に以下の処理を行います。

  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/lets Webサイトのセキュリティを強化するなら、Let's Encryptで無料SSL証明書を取得してください。この方法でHTTPS化すれば、Google検索ランキングの向上だけでなく、ユーザーからの信頼獲得にも直結します。サーバー管理者なら誰でも利用できるこの仕組みで、わずか数分でSSL証明書を発行できます。  本記事では、Let's Encryptの基本概念から、実際の取得手順、さらには自動更新の設定まで、実務で使えるノウハウを余すところなく解説します。Apache、Nginx、さらにはクラウド環境(AWS、GCP)での設定方法まで網羅しているので、あなたの環境に合わせてすぐに実践できます。それでは、具体的な手順に進みましょう。

目次