初めに #
近年、Web サイトの HTTPS 化(常時 SSL)は、もはや特別な施策ではなく、運営者にとって必須の要件となっています。
このようなセキュリティ対策は、利用者を守るという観点だけでなく、検索エンジン最適化(SEO)の面でも重要となっています。
Google 等の主要な検索エンジンでは HTTPS 化された Web サイトを評価対象としており、未対応のサイトでは検索順位に不利になる可能性があります。
一方で、SSL/TLS 証明書は基本的に有料で提供されているケースが多く、特に個人運営や小規模な Web サイトにとっては、継続的なコスト負担が導入の障壁となる場合があります。
そのような課題を解決する現実的な選択肢として、無料で利用可能な認証局「Let’s Encrypt」が広く活用されています。
本記事では、AlmaLinux 10 環境にて Certbot を用いて Let’s Encrypt の SSL/TLS 証明書を取得する手順を、初心者の方にも分かりやすく解説します。
前提条件 #
本記事では、以下の条件を満たしていることを前提として解説しております。
Apacheを利用したWeb環境を構成していること- サーバーの
80/tcpおよび443/tcpが外部からアクセス可能であること - 取得対象ドメインの
Aレコードが本サーバーのIPアドレスを指していること HTTP-01チャレンジ方式を利用して証明書を取得すること
また、本記内では、AlmaLinux 10 環境を利用していますがRHEL系のOS(Rocky Linux / RHEL など)であれば、基本的に同様の手順で対応可能です。
Let’s Encryptとは? #
Let’s Encrypt は、Internet Security Research Group(ISRG)が運営する、無料の SSL/TLS 証明書を提供する認証局(CA)です。
Web 全体のセキュリティ向上を目的として設立されており、誰でも無償で証明書を取得・更新できる点が大きな特徴となります。
Let’s Encrypt が発行する証明書は「ドメイン認証」方式を採用しており、証明書申請者が該当ドメインを正当に管理していることを技術的に検証した上で発行されます。
一方で、企業実在性を確認する「組織認証(OV)」や「拡張認証(EV)」には対応しておらず、証明書自体に企業名などが表示されることはありません。
暗号化の強度や安全性の観点においては、有料証明書と技術的な差はありません。
そのため、個人サイトや技術ブログ、一般的な Web サービスにおいては、この点が問題になるケースはほとんどありません。
また、Let’s Encrypt の証明書は有効期限が 90 日と比較的短く設定されています。
Certbot などの公式クライアントを利用することで、証明書の取得および更新を自動化する事ができます。
Certbot のインストール #
Certbot は、Let’s Encrypt が公式に提供している SSL/TLS 証明書管理クライアントツールとなります。
証明書の取得、更新、失効といった一連の作業を自動化できるため、Let’s Encrypt を利用する際には事実上の標準ツールとなっています。
AlmaLinux 10 の標準リポジトリには Certbot パッケージが含まれていないため、本記事では EPEL リポジトリを利用して導入を行う方法をご紹介します。
初めにコマンドを実行し EPEL を有効化してください。
dnf install epel-release
すでに有効になっている場合は、この作業は不要となります。
実行すると、以下のように確認画面が表示されます。
Total download size: 18 k
Installed size: 25 k
Is this ok [y/N]:
有効化が完了すると、次のメッセージが表示されます。
続いて、次に先ほど有効化した、EPEL より Certbot のインストールを行います。
次のコマンドを実行してください。
dnf install -y certbot python3-certbot-apache
インストールが完了すると、次のメッセージが表示されます。
Complete!
以下のコマンドを実行することで、パッケージの導入有無を確認することができます。
$ rpm -qa | grep -E "^certbot|^python3-certbot-apache"
python3-certbot-apache-4.2.0-1.el10_1.noarch
certbot-4.2.0-1.el10_1.noarch
記事執筆時点で AlmaLinux 10 向けに提供されているバージョンは 4.2.0-1 となっておりました。
以上で Certbot の導入は完了となります。
SSL証明書の取得 #
先ほど導入した Certbot を利用しSSL 証明書の取得を進めていきます。
初めに以下のコマンドを実行してください。
certbot --apache
上記コマンドを実行すると、対話形式で設定が進みます。
初めに証明書の失効通知や有効期限切れ通知を受け取るためのメールアドレスの入力を求められます。
任意のメールアドレスを入力し、Enter を押してください。
なお、検証用途の場合は未入力のまま設定することも可能となっております。
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address or hit Enter to skip.
(Enter 'c' to cancel):
次に Let’s Encrypt の利用規約への同意を求められます。
内容を確認のうえ、問題なければ Y を入力して Enter を押してください。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at:
https://letsencrypt.org/documents/LE-SA-v1.6-August-18-2025.pdf
You must agree in order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o:
次に、HTTPS を有効化するドメインの選択を求められます。
出力内容には現在、Apache に設定されている VirtualHost の一覧が表示されます。
Which names would you like to activate HTTPS for?
We recommend selecting either all domains, or all domains in a VirtualHost/server block.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: XXXXXX.ne.jp
2: YYYYYY.ne.jp
3: ZZZZZZ.ne.jp
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel):
有効化を行いたいドメインの番号を入力し Enter を押してください。
複数のドメインを同時に有効化したい場合は、対象となる番号をカンマ区切り、またはスペース区切りで入力してください。
今回は 例として 1 を入力し、XXXXXX.ne.jp を指定しています。
対象ドメインを選択すると、証明書の取得処理が開始されます。
blank to select all options shown (Enter 'c' to cancel): 1
Requesting a certificate for XXXXXX.ne.jp
証明書の取得および Apache への反映が正常に完了すると、以下のようなメッセージが表示されます。
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/XXXXXX.ne.jp/fullchain.pem
Key is saved at: /etc/letsencrypt/live/XXXXXX.ne.jp/privkey.pem
This certificate expires on 2026-04-18.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.
この出力には、取得した証明書および秘密鍵の配置パス、ならびに証明書の有効期限が表示されます。
先述の通り、Let’s Encrypt が発行する証明書の有効期限は 90 日間となっております。
今回の例では 1 月 18 日に証明書を取得しているため、有効期限が 4 月 18 日 となっています。
また、Certbot により 証明書の自動更新タスクが自動的に設定されることが確認できます。
以上で SSL 証明書の取得および Apache への設定反映は完了となります。
生成される設定ファイルについて #
Apacheのバーチャルホストについて #
Certbot の Apache オプションでは、証明書の取得とあわせて、Apache の設定ファイル(バーチャルホスト設定ファイル)が自動的に生成されます。
例えば、/etc/httpd/conf.d/XXXXXX.conf にてバーチャルホストを定義している場合は以下のような設定ファイルが新たに作成されます。
/etc/httpd/conf.d/XXXXXX-le-ssl.conf
また、設定ファイルの生成後は自動的に Apache の再読み込みが実行されます。
これにより生成された設定ファイルが自動的に読み込まれ反映される仕様となっています。
生成される証明書ファイル #
Certbot により取得された SSL 証明書および秘密鍵は、以下のパスにドメインごとのディレクトリとして配置されます。
/etc/letsencrypt/live/
例えば、今回の例となる XXXXXX.ne.jp の証明書を取得した場合は以下のように関連ファイルが作成されます。
/etc/letsencrypt/live/XXXXXX.ne.jp/cert.pem
/etc/letsencrypt/live/XXXXXX.ne.jp/chain.pem
/etc/letsencrypt/live/XXXXXX.ne.jp/fullchain.pem
/etc/letsencrypt/live/XXXXXX.ne.jp/privkey.pem
それぞれのファイルの役割は以下の通りとなります。
| ファイル名 | 内容 |
|---|---|
cert.pem |
サーバ証明書ファイル |
chain.pem |
中間証明書ファイル |
fullchain.pem |
サーバ証明書と中間証明書を含むファイル |
privkey.pem |
秘密鍵ファイル |
自動更新を有効化する #
Certbot には、取得した SSL 証明書の有効期限を定期的に確認し、更新が必要な場合に自動で更新を行う機能が用意されています。
これにより、証明書の有効期限切れを防ぎ、継続的な SSL 運用を行う事ができます。
AlmaLinux 10 環境の自動更新処理は cron ではなく systemd の timer により管理されています。
こちらはデフォルトでは起動されていない状態となっている場合があります。
そのため、以下のコマンドを実行し、自動更新タイマーを起動してください。
systemctl enable --now certbot-renew.timer
起動状態の確認は以下のコマンドにて確認する事ができます。
systemctl is-active certbot-renew.timer
以下のように active と表示されていれば、自動更新タイマーは正常に起動しています。
active
SSL通信の動作確認 #
証明書の取得および設定反映が完了したら、SSL 証明書が正しく適用されていることを確認してください。
主な確認方法として、コマンドによる確認と ブラウザーによる確認の 2 通りがあります。
コマンドで確認する #
コマンドを利用して、サーバーが提示している SSL 証明書の情報を確認するには、以下のように openssl コマンドを実行してください。
openssl s_client -connect <ドメイン名>:443 -servername <ドメイン名>
コマンドを実行すると、接続先サーバーが提示している証明書情報が出力されます。
エラーなく証明書情報が表示されていれば、SSL 証明書が正しく適用されていることを確認できます。
ブラウザで確認する #
ブラウザから SSL 証明書を確認する場合は、対象のドメインに HTTPS でアクセスし、アドレスバーの表示を確認してください。
SSL 証明書が正しく適用されている場合、アドレスバーに警告表示は出ず、接続が安全であることが示されます。
アドレスバーのサイト情報アイコンをクリックすることで、証明書の発行元や有効期限などの詳細情報を確認することができます。