Overview
Linux CentOS + Apache に Let's Encrypt を導入する方法を説明します。
Installation
Let's Encrypt は、手動でインストールすることもできますが、Cerbot という自動化サービスがありますのでこちらを利用します。
- 書き込み可能な任意の場所に
githubからCerbotをダウンロードします。
cd /usr/local
git clone https://github.com/certbot/certbot.git
Obtain a certificate
Cerbot を利用して、SSL証明書を取得します。
- ダウンロードした、
Cerbotのディレクトリに入り、SSL証明書を取得するコマンドを叩きます。
cd certbot
./certbot-auto certonly --webroot -w /var/www/vhosts/www.mydomain.com/html -d www.mydomain.com -m contact@mydomain.com -n --agree-tos
| Option | Description | Value |
|---|---|---|
| -w | キュメントルート | /var/www/vhosts/www.mydomain.com/html |
| -d | ドメイン名 | www.mydomain.com |
| -m | 連絡先のメールアドレス | hoge@hoge.com |
| -n | 対話入力をスキップする | |
| --agree-tos | 利用規約に同意する |
※ キュメントルート、ドメイン名、連絡先のメールアドレスは、環境に合わせた任意の値を設定してください。
正常に証明書を取得できると、/etc/letsencrypt/live/www.mydomain.com/ 以下に次のファイルを確認できます。
cert.pem privkey.pem chain.pem fullchain.pem
Configure Apache
取得したSSL証明書をApacheサーバーに設定します。
- 次のように
/etc/httpd/conf/httpd.confを編集します。
<VirtualHost *:443>
ServerName www.mydomain.com
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/www.mydomain.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.mydomain.com/privkey.pem
SSLCACertificateFile /etc/letsencrypt/live/www.mydomain.com/chain.pem
<Directory "/var/www/vhosts/www.mydomain.com/html">
... 省略 ...
</Directory>
</VirtualHost>
- Apache を再起動します。
service httpd restart
Update certificate
Let's Encrypt 証明書は、90日の有効期限しかない。
- 次のコマンドで更新をします。
/usr/local/certbot/certbot-auto renew --post-hook "service httpd restart"
Configure Cron
手動で更新をするのは、手間なので、Cron を使って自動化します。
-
Cronの設定ファイルを作成します。
vim /etc/cron.d/letsencrypt
- ファイルに以下を記述します。
PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/developer/bin
00 01 * * 01 root /usr/local/certbot/certbot-auto renew --post-hook "service httpd restart"
※ PATH は、環境によって異なります。 echo $PATH で確認して置き換えてください。
※ Cron 設定の 00 01 * * 01 は、毎週月曜日の朝1時に実行するを意味します。
(参考に https://crontab.guru/)
-
Cronを再起動します。
service crond restart
以上になります。