2019年8月30日金曜日

CentOS6とApache2.2.15の環境でLet's Encryptを複数のバーチャルホスト(複数のドメイン)で設定

www.example.com と example.com の2つを設定する
すでにSSLなしでは(80)では通信できている状態

CentOS release 6.10 (Final)
Apache/2.2.15

yum -y install centos-release-scl
yum -y install python27 python27-python-tools

cd /usr/bin
wget https://dl.eff.org/certbot-auto
chmod 755 certbot-auto

# scl enable python27 bash
# python -V
Python 2.7.13

certbot-auto certonly --webroot -w /var/www/html/example.com -d www.example.com,example.com -m info@example.com

ここまでは下記サイトを参考にさせていただきました。
https://qiita.com/mindwood/items/4f09da35fa9ffff6f53d


SSL関連の設定を3つのファイルに分ける。
/etc/httpd/conf.d/ssl.conf
ssl.conf → SSLの共通設定
ssl.www.example.com.conf → https://www.example.com 用の設定
ssl.example.com.conf → https://example.com 用の設定

apacheはconf.d以下に配置された「.conf」ファイルをhttpd.confにインクルードするので追加の設定は新たにファイルをこしらえたほうがすっきりします。

まず、ssl.confをコピーします。
cp ssl.conf ssl.www.example.com.conf

ssl.confの設定
の項目をガッツリ削除。
ssl.confには、wwwとwwwなしで使う共通設定のみ残します。

NameVirtualHost *:443 を追記する(どこでもいい。迷ったら一番最後)

次は、www.example.com.confの設定。
www.example.com.confからssl.confに残した部分を削除。

以下の部分を修正

「DocumentRoot」と「ServerName」の項目を有効にする。
DocumentRoot "/var/www/html/example.com" #環境に合わせて修正する
ServerName www.example.com:443 #環境に合わせて修正する

下記も修正

#SSLProtocol all -SSLv2

SSLProtocol all -SSLv2 -SSLv3


#SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES

SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES!RC4


#SSLCertificateFile /etc/pki/tls/certs/localhost.crt

SSLCertificateFile /etc/letsencrypt/live/www.example.com/cert.pem


#SSLCertificateKeyFile /etc/pki/tls/private/localhost.key

SSLCertificateKeyFile /etc/letsencrypt/live/www.example.com/privkey.pem


#SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt

SSLCertificateChainFile /etc/letsencrypt/live/www.example.com/chain.pem


設定を確認。
apachectl configtest

syntax OK と表示されたらwww.example.com.confの設定は完了。

次にexample.com.confの設定をします。

cp www.example.com.conf example.com.conf

example.com.confの設定を修正。

設定を確認。
apachectl configtest

apacheリスタートします。

両方のSSL通信を確認する。


ここまでは下記サイトを参考にさせていただきました。
http://y-stream.blogspot.com/2011/09/apachessl.html




毎週土曜日の午前3時に更新チェック
# crontab -e

00 02 * * 5 scl enable python27 "bash -c \"certbot-auto renew --post-hook '/sbin/service httpd restart'\"" > /var/log/certbot.log 2>&1

ここまでは下記サイトを参考にさせていただきました。
https://qiita.com/mindwood/items/4f09da35fa9ffff6f53d