前回からの続き。
ドメインのDNS変更と、バーチャルホストの設定
先にバーチャルホストの設定から。
conf.d/配下にサイトごとに設定を行った。
まとめても良かったんだけど。
# vim /etc/httpd/conf.d/mydomain.com.conf
内容
<VirtualHost *:80>ServerName mydomain.comDocumentRoot "/var/www/mydomain.com/public_html"DirectoryIndex index.html index.phpErrorLog /var/log/httpd/mydomain.com_error_logCustomLog /var/log/httpd/mydomain.com_access_log combinedAddDefaultCharset UTF-8</VirtualHost>
次はSSL。
SSLの設定
無料のLets Encryptを使うことにします。
事前に少し調査。
Lets Encryptについて
参考:https://ssl.sakura.ad.jp/column/free-or-paid/
無料でも問題ないのか?
同じSSL証明書である以上、強度は同等らしい。
何故無料で運営できているのか?
Lets Encryptは寄付により運用できている。
無料であることのデメリットは?
フィッシングサイトなどで悪用される場合がある。このため永久的に暗号化を保証できるか微妙ではある。
90日で更新が必要。なので自動化が必要になる。
寄付なので、サービス終了が起こり得るリスクがある。
導入手順
基本はこれに従ってやればOK.
https://letsencrypt.jp/usage/
mod_sslの確認
このコマンドで、
# httpd -M
この表示があればOK.
ssl_module (shared)
443ポートの確認
iptableで開放されているか確認。
iptables -L
httpsの表示があればOK。
ACCEPT tcp -- anywhere anywhere tcp dpt:https
Certbot クライアント準備
Epelを有効に
yum install epel-release
certbot-autoをインストール
# wget https://dl.eff.org/certbot-auto# chmod a+x certbot-auto# ./certbot-auto
./certbot-auto を実行することで、必要なパッケージがダウンロードされる。
その後自動的に対話式で証明書作成が始まる。
virtualhost設定を取得してドメインリストが表示されるので、該当のものを選択してEnter.
成功すると以下のような表示に。
Congratulations! You have successfully enabled xxxx.com~
pemファイルの格納場所や有効期限も記される。
pemは、以下にあるらしい。
/etc/letsencrypt/live/
オプションで、sslの設定ファイルも自動生成可能。
今回は生成した。
/etc/httpd/conf.d/mydomain.com-le-ssl.conf
で、アクセスしてみるのだが、
Virtualhostが反映されない。。。
いろいろ調べたところ、自動生成されるSSL用confファイルの、ここだった。。
<IfModule mod_ssl.c><VirtualHost *:443></VirtualHost></IfModule>
これを
#<IfModule mod_ssl.c><VirtualHost *:443></VirtualHost>#</IfModule>
これでOK.
mod_sslは入っているはずなのだが、
どういう意味だったのだろう。。。
ラクしたはずが逆に時間を食うという好例。。
とにかく、これでSSL化はOK.
自動更新の設定だな。
自動更新設定
更新は、このコマンド一発でいけそう。
sudo /var/www/certbot-auto renew --post-hook "sudo service httpd restart"
Cert not yet due for renewal なので何も起こらないが、動作しているようだ。
あとはcronに設定して、様子を見る。
cronの実行確認
/etc/rc.d/init.d/crond status
cronの設定。
毎週月曜の0時に実行。
root権限で、
# crontab -e
00 00 * * 1 /var/www/certbot-auto renew --post-hook "sudo service httpd restart"
確認
# crontab -l00 00 * * 1 /var/www/certbot-auto renew --post-hook "sudo service httpd restart"
これで自動化されるだろう。
メール飛ばす機能もつけたいがまた今度。