http → httpsに統一
wwwあり → wwwなしに統一
とすることに決め
SSLの設定を以下のようにしていたのですが
1 2 3 4 |
<VirtualHost *:443> ServerName www.example.com Redirect permanent / https://example.com/ </VirtualHost> |
これだと
https://www.example.com/
にアクセスすると、リダイレクト前にエラーが出て、
Chrome デベロッパー・ツールのコンソール上で以下のようなエラーがでていました。
「Redirecting navigation www.example.com -> example.com because the server presented a certificate valid for example.com but not for www.example.com. To disable such redirects launch Chrome with the following flag: –disable-features=SSLCommonNameMismatchHandling」
ブラウザ上では エラーが出てこなかったので気付きませんでした。
Let’s Encrypt SSL証明書は、1枚の証明書で複数ドメイン・サブドメインに対応できるとのことで、
以下のように作成し直すと、example.comとして作成していた元々の証明書が、www.example.comにも対応される形で再発行されます。
1 |
./certbot/certbot-auto certonly --agree-tos --email info@example.com --webroot --webroot-path /home/apache/www/example.com/www -d example.com -d www.example.com |
証明書ファイルのpathは変わらないため、example.comと同じ形で証明書を設定します。
1 2 3 4 5 6 7 8 9 |
<VirtualHost *:443> ServerName www.example.com SSLEngine on SSLProtocol all -SSLv2 -SSLv3 SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem Redirect permanent / https://example.com/ </VirtualHost> |
エラーチェックをしたあと、reload処理。エラーも無事表示されなくなりました。
apachectl configtest
systemctl reload httpd