「Let’s EncryptでTLS化する(前編)」からの続きです。
4.コンフィグファイルの確認
サーバ証明書の取得と同時に、certbot-autoはhttpd.confの書き換えとファイルの自動生成も行っています。
/etc/httpd/conf/httpd.conf ※書き換え
/etc/httpd/conf/httpd-le-ssl.conf ※自動生成
/etc/letsencrypt/options-ssl-apache.conf ※自動生成
httpd.confから、httpd-le-ssl.confを読み込んで(Includeして)いる。
httpd-le-ssl.confから、options-ssl-apache.confを読み込んで(Includeして)いる。
■ httpd.confの内容(変更前)※追記された箇所
==============================
<VirtualHost *:80>
:
RewriteEngine on
RewriteCond ・・
RewriteRule ・・
</VirtualHost>
<IfModule mod_ssl.c>
NameVirtualHost *:443
</IfModule>
Include /etc/httpd/conf/httpd-le-ssl.conf
==============================
※certbot-autoを実行した際に「httpアクセスをhttpsにリダイレクトする」とすると「Rewrite・・」の記載が追記されています。
■ httpd-le-ssl.confの内容
==============================
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin ・・
DocumentRoot ・・
ServerName ・・
ErrorLog ・・
CustomLog ・・
<Directory "/var/www/html/・・">
Options ・・
:
</Directory>
SSLCertificateFile ・・
SSLCertificateKeyFile ・・
SSLCertificateChainFile ・・
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>
==============================
■ options-ssl-apache.confの内容(変更前)
==============================
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite ・・
SSLHonorCipherOrder on
SSLOptions +StrictRequire
LogFormat ・・vhost_combined
LogFormat ・・vhost_common
==============================
Apacheのhttpd.conf、ssl.confの既存設定にもよりますが、このままではうまく行かない場合があります。
※僕の環境ではうまかいかなかったので、以下のような書き換えを行いました。ssl.confとhttpd-le-ssl.confの内容がダブってしまったようです。
5.httpd.confの書き換え
「NameVirtualHost *:443」は、let's Encryptがhttpd.conf に自動で記載済みでしたが、これはコメントアウトします。また、certbot-autoが自動生成したhttpd-le-ssl.confは使用しませんので、Include部分もコメントアウトします。
■ httpd.confの内容(変更後)
==============================
<VirtualHost *:80>
:
RewriteEngine on
RewriteCond ・・
RewriteRule ・・
</VirtualHost>
#<IfModule mod_ssl.c>
# NameVirtualHost *:443
#</IfModule>
#Include /etc/httpd/conf/httpd-le-ssl.conf
==============================
6.ssl.confの書き換え
「NameVirtualHost *:443」の記載を追加します。
また、httpd-le-ssl.confの <VirtualHost *:443>…</VirtualHost> の部分を、/etc/httpd/conf.d/ssl.conf に転記します。その際、ssl.confにもともと記載があった <VirtualHost _default_:443>…</VirtualHost> の部分はコメントアウトします。
■ ssl.confの内容
==============================
LoadModule ssl_module modules/mod_ssl.so
Listen 443
NameVirtualHost *:443 (httpd.confから転記)
:
<VirtualHost *:443> (httpd-le-ssl.confから転記)
ServerAdmin ・・
DocumentRoot ・・
ServerName ・・
ErrorLog ・・
CustomLog ・・
<Directory "/var/www/html/・・">
Options ・・
:
</Directory>
SSLCertificateFile ・・
SSLCertificateKeyFile ・・
SSLCertificateChainFile ・・
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
==============================
7.options-ssl-apache.confの書き換え
options-ssl-apache.confの中にあるLogFormatの記載をコメントアウトします(httpd.confにLogFormatの記載があるため)。
■ options-ssl-apache.confの内容(変更後)
==============================
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite ・・
SSLHonorCipherOrder on
SSLOptions +StrictRequire
#LogFormat ・・vhost_combined
#LogFormat ・・vhost_common
==============================
8.サイト内リンクの書き換え
サイト内に自サイトへのリンクがある場合はソースの「http://〜」を「https://〜」に書き換えます。
修正したコンフィグファイルのチェックを行い、Apacheの再起動をすればTLS化の対応は完了です。
# apachectl configtest (httpd.conf に間違いがないかチェックする)
# /etc/rc.d/init.d/httpd restart (Apacheの再起動)
ブラウザでアクセスしてみてください。URLの欄に鍵マークが表示されます。