変更履歴
- Rev. 0.7 : 2025年12月10日
- 新規作成
1 はじめに
本記事は、2025年11月に、
RHEL 10
+ Apache 2.4での
Let's Encrypt
のインストールと
SSLサーバー証明書の取得を実施した時の記録を整理したものです。
今までの方式でのLet's Encryptインストール、
その後の“certbot”実行では、
RHEL 10でのSSLサーバー証明書は発行はできませんでした。
それに代わる“Snap”
を利用した方式では、
その後のcertbot実行でSSLサーバー証明書を正常に発行することができました。
本記事は、自分の備忘録としてこのことを残すことを第一の目的として記述しました。
Snap
(旧称・Snappy)とは
カノニカル社が
設計・開発したソフトウェアデプロイメントシステムかつパッケージ管理システム
で、元々はUbuntu Phoneオペレーティングシステム用に設計・開発されたものだそうです。
パッケージは“Snap”と呼ばれ、Snapを使うツールは“Snapd”と呼ばれます。
本記事を記述するにあたって、いくつかのWebページを参考にしました。
参考にしたWebページを4章に示します。
2 Let's Encryptのインストール
“Let's Encrypt / certbot”は、以降、certbotと簡略して示すことにします。
2.1 事前に行っておくべきこと
certbotをインストールする前に、下に示すことが行われていなければなりません。
当たり前のことといえば、ごく当たり前の事前条件です。
① DNSにドメインの、IPv4ではAレコード、IPv6ではAAAAレコードが登録されている。
② Apache 2.4がすでにインストールされている。
③ ルーター、およびファイアウォールで、80番ポートがオープンしていること。
2.2 SnapによるLet's Encrypt / certbotのインストール
Snapによるcertbotのインストールは、次の3ステップで行います。
Step 1: RHEL 10用のEPELレポジトリを有効にする
Step 2: Snapをインストールする
Step 3: certbotをインストールする
2.2.1 RHEL 10用のEPELレポジトリを有効にする
下に示すページにしたがって、RHEL 10用のepel-releaseをインストールして、
EPELリポジトリを有効にします。
|
1 2 |
# subscription-manager repos --enable codeready-builder-for-rhel-10-$(arch)-rpms # dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-10.noarch.rpm |
2.2.2 Snapをインストールする
Snapは、下に示す手順でインストールし有効化します。
|
1 2 3 4 5 6 |
# dnf install snapd # systemctl enable --now snapd.socket # ln -s /var/lib/snapd/snap /snap # snap install core # snap refresh core |
上に示す1~2行目は、Snapのインストールと有効化です。
3行目は、Snapがインストールされた“/var/lib/snapd/snap”のディレクトリパスを、
簡易的なディレクトリパスとして扱うためのシンボリックリンクです。
5~6行目では、snapdのバージョンが最新であることを確認します。
コマンドラインで上の2つのコマンドを実行して、
最新バージョンのsnapdを使用していることを確認します。
インストール済みのパッケージは、“snap list”コマンドで確認することができます。
2.2.3 certbotをインストールする
certbotは、下に示すWebページで示されている手順にしたがってインストールします。
|
1 2 3 |
# dnf -y remove certbot # snap install --classic certbot # ln -s /snap/bin/certbot /usr/bin/certbot |
dnf、yumなどのOSのパッケージマネージャーを使用してcertbotパッケージをインストールして
いる場合は、1行目のコマンドで、Snap版certbotをインストールする前にそれらを削除します。
certbotコマンドを実行するときに、OSのパッケージマネージャーからのインストール版ではなく
Snap版が使用されるようにします。
2行目で、Snap版certbotをインストールします。
3行目で、dnf版のように、“/usr/bin/certbot”としてcertbotコマンドを実行できるようにします。
3 SSLサーバー証明書の発行とApacheへの登録
3.1 サーバー証明書の発行
SSLサーバー証明書は、Let's Encryptの“certbot”クライアントを実行して発行します。
ここでは、Apache httpdのDocumentRootが“/var/www/www.mywebsite.jp”に
設定されていると仮定して話を進めます。
実際のDocumentRootの設定に合わせて読み替えてください。
3.1.1 certbotクライアント
SSLサーバー証明書を発行するためには、
certbotクライアントは、下に示すように少なくとも次の2つのオプションを指定して実行します。
これで証明書の発行は終了です。 参考として、図3.1-1にcertbotの実行例を示します。
2つのオプション以外にも、
SSLサーバー証明書の発行に際しては、表3.1-1に
示すオプションの利用が可能です。
なお、certbotクライアントの利用可能な全オプションについては、
“certbot -h all”コマンドで確認することができます。
従来あった“certbot command:
https://letsencrypt.jp/command/”のページは、無くなりました。
図3.1-2に“certbot help”、または“certbot -h”
コマンドによるオプションの表示例を示します。
3.1.2 SSLサーバー証明書が保存される場所
Let's Encryptで発行されるSSLサーバー証明書は、
サーバー証明書と中間CA証明書の2つの証明からなります。
中間CA証明書とは、
電子証明書(デジタル証明書)を発行する認証局が、
自分自身の認証のために発行する電子証明書の1つです。
「中間証明書」とも言います。
CAとは「Certification Authority」の略で、認証局を意味します。
電子証明書はインターネット上で本人証明を行うために使用されており、
この証明書を発行する「信頼できる第三者」のことを認証局と言います。
他にも、暗号化用の秘密鍵も発行します。
サーバー証明書や秘密鍵は“/etc/letsencrypt/archive/”以下に保存され、
表3.1-2に示すパスにシンボリックリンクが作成されます。
シンボリックリンクのリンク先は、
SSLサーバー証明書を更新するたびに新しい証明書に変更されます。
|
1 2 3 4 5 6 7 |
# ls -l /etc/letsencrypt/live/www.mywebsite.jp/ total 4<br> -rw-r--r-- 1 root root 543 Apr 17 17:23 README lrwxrwxrwx 1 root root 44 Apr 17 17:23 cert.pem -> ../../archive/www.mywebsite.jp/cert1.pem lrwxrwxrwx 1 root root 45 Apr 17 17:23 chain.pem -> ../../archive/www.mywebsite.jp/chain1.pem lrwxrwxrwx 1 root root 49 Apr 17 17:23 fullchain.pem -> ../../archive/www.mywebsite.jp/fullchain1.pem lrwxrwxrwx 1 root root 47 Apr 17 17:23 privkey.pem -> ../../archive/www.mywebsite.jp/privkey1.pem |
3.2 Apache 2.4への設定
SSLサーバー証明書が発行されたら、Apache 2.4に設定を追加します。
”ssl.conf”の次に示す項目に、それぞれ設定します。
・ SSLCertificateFile
・ SSLCertificateKeyFile
・ SSLCertificateChainFile(設定しなくても、大丈夫なようです)
...
SSLCertificateFile /etc/letsencrypt/live/<サーバーのドメイン名>/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/<サーバーのドメイン名>/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/<サーバーのドメイン名>/chain.pem
...
これでApache httpdを再起動して完了です。
3.3 SSL証明書の自動更新
Snap版certbotを使用している場合、
certbotの自動更新プロセスは、Snapのサービス管理によってハンドルされます。
cronによる“certbot renew”コマンドを直接入力する代わりに、
Snapのサービス管理にフックを設定します。
Snap版certbotが更新を行う際、
“/etc/letsencrypt/renewal-hooks/deploy/”ディレクトリ内のスクリプトが自動的に実行されます。
Snap版certbotで自動更新を設定する手順は、以下のようになります。
1. フックスクリプトの作成
Apache、およびSSL証明書を利用しているpostfix、dovecot、
また他のサービスを再起動するためのスクリプトを作成します。
例えば、“/etc/letsencrypt/renewal-hooks/deploy/restart-services.sh”という
パスにスクリプトを作成し、以下の内容を記述します。
|
1 2 3 4 |
#!/bin/bash systemctl restart httpd systemctl restart postfix systemctl restart dovecot |
このスクリプトに実行権限を与えます。
|
1 |
# chmod +x /etc/letsencrypt/renewal-hooks/deploy/restart-services.sh |
2. 自動更新の確認
“snap.certbot.renew.timer”が、有効になっていることを確認します。
以下のコマンドで確認できます。
|
1 |
# systemctl list-timers | grep certbot |
このコマンドで“snap.certbot.renew.timer”がリストに表示され、
次の実行時刻が設定されていることを確認します。
これにより、証明書が更新された後にApacheやPostfixなどのサービスが再起動され、
新しい証明書が正しく使用されるようになります
4 参考サイト
本記事記述にあたり、下に示すWeb記事を参考にしました。
Let's Encryptで証明書を発行・管理する(snap版) | Zenn
Snap版Certbotのフック設定 | Qiita
certbot(Letsecnrypt)コマンド・オプションを真面目に理解する | Qiita
以上
本記事の元となっているWordで作成したPDFを
ページ最後に貼り付けました。
少しでも役に立てていただければ、うれしく思います。
このPDFファイルは、自由に配布されてもかまいません。
ただし、再配布の際には、
入手元と著者名は明らかにしてください。
なお、上のPDFファイルの内容、また本文中の記述に、
誤字や脱字、誤った内容の記述など見つかりましたら、
下に示すフォームでご連絡いただければ幸いです。





