Last update: 2024/2/15
※注意:インストールしてから知ったが、現在はSnapを使ったインストールが推奨されている模様。
まずはApacheのSSLモジュールをインストールする。
$ sudo dnf install mod_ssl
インストールしたモジュールは、httpd -Mで確認することができる。
$ httpd -M | grep ssl_module
ssl_module (shared)
この状態でLet's Encryptをインストールする。
$ sudo dnf install certbot python3-certbot-apache
インストールが完了したら、自分の独自ドメインを-dオプションで設定して実行する。
$ certbot --apache -d 独自ドメイン
実行すると以下を聞かれるので、入力していく。
しかしここで以下のようなエラーが発生。
Unable to find a virtual host listening on port 80 which is currently needed for Certbot to prove to the CA that you control your domain. Please add a virtual host for port 80.
参考文献で書かれている方法を参考にし、Apacehの設定ファイル/etc/httpd/conf/httpd.confをroot権限でエディタで開き、ファイルの最後に以下を追加して保存する。ServerAdminとServerNameの部分は自分の独自ドメインを入れる。
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin root@独自ドメイン
DocumentRoot /var/www/html
ServerName 独自ドメイン
</VirtualHost>
これで以下を再実行したところ無事に設定が完了して、Webサイトもhttpsでアクセスできるようになった。
$ certbot --apache -d computer-sandbox.net
Let's Encryptで発行したSSL証明書は90日で有効期限が切れてしまう。証明書を更新するには以下を実行すればよい。
$sudo certbot renew
ただ、手動で更新するのは手間なので、cronで自動実行されるようにしておく。やり方は色々あるが、sudo crontab -eでrootのcrontabを編集し、以下を追加した。
0 3 * * * /usr/bin/certbot renew --deploy-hook "systemctl reload httpd"
内容としては毎日午前3時にcertbot renewを実行し、証明書が更新された場合はApacheをreloadするようにしている。
ネコでもわかる!さくらのVPS講座 ~第六回「無料SSL証明書 Let’s Encryptを導入しよう」 | さくらのナレッジ
Copyright (c) 2024 kd