思い立って、サブドメインを作ってVPSにバーチャルホストの設定(xxxx.ji0vwl.netのxxxxごとに違うページを表示させる)をしてみました。HTTPなら比較的簡単なのですが、勉強のためHTTPSでトライ。
ここでは例として、もともと https://test.ji0vwl.net/web/配下に配備してあった旧Webサイトを、https://web.ji0vwl.net に移してみます。
必要なことは以下の4つです。
1. DNSサーバに、web.ji0vwl.netのAレコードを追加
2. Let’s EncryptのSSL証明書にweb.ji0vwl.netを追加
3. ssl.confにVirtualHostとしてweb.ji0vwl.netを追加
4. web.ji0vwl.netにアクセスされた時に参照されるコンテンツ(HTMLファイルなど)を配備
1. DNS設定
まずは、DNSサーバ設定で web.ji0vwl.netのAレコードを登録します。お名前.comを使用した場合の例です。111.111.111.111の部分に自分のVPSのIPアドレスを入れます。もともとji0vwl.netのAレコードは登録されているので同じIPアドレスを入力すればOK。
2. SSL証明書取得
Let’s Encryptの導入は済んでいる前提で進めます。certbot-autoを起動して、SSL証明書にweb.ji0vwl.netを追加します。念のため、一旦Webサーバ(httpd)を止めておいたほうがいいでしょう。
$ sudo -i # service httpd stop # cd certbot # ./certbot-auto
青い画面が出てくるので、HTTPSにしたいドメイン(FQDN)を「ji0vwl.net web.ji0vwl.net」と、スペース区切り(カンマ区切りでもOK)で列挙します。
3. バーチャルホスト追加&SSL証明書設定
取得したSSL証明書を、追加するバーチャルホストに設定します。今回は、web.ji0vwl.netもji0vwl.netも同じ証明書を割り当てます。Let’s Encryptは無料ですが、複数のサブドメインが一つの証明書で対応できるようで、なかなかの優れものです。
# cd /etc/httpd/conf.d # cp ssl.conf ssl.conf.old # vi ssl.conf ・ ・ ・ NameVirtualHost *:443 <VirtualHost *:443> DocumentRoot /var/www/web ServerName web.ji0vwl.net SSLEngine on SSLCertificateFile /etc/letsencrypt/live/ji0vwl.net/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/ji0vwl.net/privkey.pem </VirtualHost> <VirtualHost *:443> DocumentRoot /var/www/html ServerName ji0vwl.net . . . </VirtualHost>
4. /var/www/web/配下にコンテンツを配備
もともと/var/www/html/web/に配備されていた旧Webサイトを、さきほどssl.confのバーチャルホストで設定した/var/www/web/にコピーし、所有者をルートからユーザとapacheにしておきます。ルートのままだとブラウザから見た時に画像が表示できませんでした。
# cp -r /var/www/html/web /var/www # cd /var/www # chown -R user:apache ./web
Webサーバを止めたままなので起動(# service httpd start)して、https://web.ji0vwl.net にブラウザでアクセスして、表示されればOKです。
あと、以前の記事で紹介したように、HTTPをHTTPSにリライトする設定をしてあげれば、s無しのhttp://web.ji0vwl.net にアクセスしても、自動的に安全なhttps://web.ji0vwl.net に書き換えてくれます。
最近は暗号化された安全なHTTPSが推奨されてきているので、個人のページといえど暗号化されていないHTTPアクセスはなくなっていく方向になりそうですね。