サイトの https 化

今時 http なサイトは流行らないのでとりあえず親サービスの SSL を有効化することにした。以下、その手順のメモ。

参考: Let’s EncryptのSSL証明書で、安全なウェブサイトを公開

apache だったので SSL のモジュールを導入
yum install -y mod_ssl

ファイヤーウォールで https を通すように設定
firewall-cmd --add-service=https --permanent
firewall-cmd --reload

証明書の取得をするスクリプトを取ってくる
curl https://dl.eff.org/certbot-auto -o /usr/bin/certbot-auto
chmod 700 /usr/bin/certbot-auto

証明書を取得する
certbot-auto certonly --webroot -w /var/www/html -d <ドメイン名> --email <メール>@<アドレス>
(ドキュメントルートにファイルを置いてアクセスすることで存在確認を取っている)

/etc/letsencrypt/live/<ドメイン名> に証明書ファイルが取得される。これを apache の設定に書き込む。(プロトコル指定は許可リストで指定…参考)

SSLProtocol -All +TLSv1 +TLSv1.1 +TLSv1.2
SSLCertificateFile /etc/letsencrypt/live/<ドメイン名>/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/<ドメイン名>/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/<ドメイン名>/chain.pem

SSL 用の VirtualHost 設定を追加

<VirtualHost *:443>

        ServerName <ドメイン名>
        DocumentRoot /var/www/html

        SSLEngine on
        SSLCertificateFile /etc/letsencrypt/live/<ドメイン名>/cert.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/<ドメイン名>/privkey.pem

        <Directory "/home/lbi/www/html">
                AllowOverride FileInfo AuthConfig Limit Indexes
                Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
                Require method GET POST OPTIONS
        
        CustomLog logs/ssl-access_log combined env=!no_log
</VirtualHost>

XOOPS Cube Legacy を使っていたので設定をSSL対応に修正

 define('XOOPS_URL', (isset($_SERVER['HTTPS'])?'https://':'http://').$_SERVER['HTTP_HOST']);

最後に apache の再起動
systemctl restart httpd

ブラウザで https にアクセスしてみて確認する。

Let’s Encrypt の証明は有効期間が短いので更新を自動で行うように /etc/crontab を設定しておく。

15 3 * * 0 root /usr/bin/certbot-auto renew --post-hook "systemctl restart httpd" 1 > /dev/null 2 > /dev/null