はじめに
CentOS7.9のApache2.4環境で、SSL/TLSサーバ証明書を発行して利用する為の設定メモです
今時ホームページで暗号化は必須ということで、証明書を取得・設定をしてHTTPS化します。
今回はLet’s Encryptを利用した、無料の証明書を使用します。
以下、公式のHPです。
Let’s Encrypt
作業の流れ(以下の続きです)
1. CentOS7.4 にMariaDB10を導入する
2. CentOS7.4 にPHP7.4を導入する
3. CentOS7.9 にWordpress5.8を導入する
4. Wordpress5.8導入後のセキュリティ設定まとめ
※必須な前提としては「2. CentOS7.4 にPHP7.4を導入する」のApache導入のみになります。
Certbotインストール
# yum install certbot
証明書の取得
※80ポートでアクセスができることが必要です
443ポートのみの解放しか不可の場合は、リダイレクトの設定をして対応します
# certbot certonly --agree-tos --non-interactive -d <ドメイン> --webroot -w <ドキュメントルート> --email <管理者メールアドレス>
例)
# certbot certonly --agree-tos --non-interactive -d hogehoge.jp --webroot -w /var/www/html --email hogehoge@example.com
取得できたら以下のようなメッセージが出ます
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator webroot, Installer None
Starting new HTTPS connection (1): acme-v02.api.letsencrypt.org
Account registered.
Requesting a certificate for lala-coeur.jp
Performing the following challenges:
http-01 challenge for xxxxxxxxx.jp
Using the webroot path /var/www/xxxxx for all unmatched domains.
Waiting for verification...
Cleaning up challenges
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/xxxxxxxxx.jp/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/xxxxxxxxx.jp/privkey.pem
Your certificate will expire on 2022-03-20. To obtain a new or
tweaked version of this certificate in the future, simply run
certbot again. To non-interactively renew *all* of your
certificates, run "certbot renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
証明書取得の確認
以下の場所にリンクが作成され、証明書ファイルが取得できていることを確認します
# ll /etc/letsencrypt/live/xxxxxxxxx.jp/
合計 4
-rw-r--r-- 1 root root 692 12月 20 13:44 README
lrwxrwxrwx 1 root root 37 12月 20 13:44 cert.pem -> ../../archive/xxxxxxxxx.jp/cert1.pem
lrwxrwxrwx 1 root root 38 12月 20 13:44 chain.pem -> ../../archive/xxxxxxxxx.jp/chain1.pem
lrwxrwxrwx 1 root root 42 12月 20 13:44 fullchain.pem -> ../../archive/xxxxxxxxx.jp/fullchain1.pem
lrwxrwxrwx 1 root root 40 12月 20 13:44 privkey.pem -> ../../archive/xxxxxxxxx.jp/privkey1.pem
リンクの作成
設定ファイル定義の為のリンクを作成します
# cd /etc/httpd/
# ln -s /etc/letsencrypt/live live
結果確認
# ll
合計 12
drwxr-xr-x 2 root root 4096 12月 3 21:33 conf
drwxr-xr-x 2 root root 4096 12月 20 13:52 conf.d
drwxr-xr-x 2 root root 4096 11月 23 14:52 conf.modules.d
lrwxrwxrwx 1 root root 21 12月 20 13:53 live -> /etc/letsencrypt/live
lrwxrwxrwx 1 root root 19 11月 23 14:20 logs -> ../../var/log/httpd
lrwxrwxrwx 1 root root 29 11月 23 14:20 modules -> ../../usr/lib64/httpd/modules
lrwxrwxrwx 1 root root 10 11月 23 14:20 run -> /run/httpd
Apacheへ証明書を定義
取得した証明書ファイルをApache設定ファイルに定義します
# cd /etc/httpd/conf.d/
# vi ssl.conf
SSLCertificateKeyFile /etc/httpd/live/xxxxxxxxx.jp/privkey.pem
SSLCertificateFile /etc/httpd/live/xxxxxxxxx.jp/cert.pem
SSLCertificateChainFile /etc/httpd/live/xxxxxxxxx.jp/chain.pem
設定反映
# systemctl restart httpd
ブラウザ上でhttps://xxxxxxxxx.jpにアクセスし
証明書が適用されていればOK!
その他
証明書は90日で期限が切れてしまいます。
その為、cronで自動的に更新を行うように設定をします。
今回は以下の場所に更新用スクリプトを作成
# mkdir /root/oper
# vi /root/oper/cert_renew.sh
#!/bin/sh
certbot renew -q --no-self-upgrade --post-hook "systemctl restart httpd.service"
実行権限付与 (今回の環境はrootしか使用しないので+xでも良いが一応)
# chmod 700 /root/oper/cert_renew.sh
cron設定
※以下は毎日2時の実行例
# crontab -e
* 2 * * * /root/oper/cert_renew.sh