思い立って、サブドメインを作ってVPSにバーチャルホストの設定(xxxx.ji0vwl.netのxxxxごとに違うページを表示させる)をしてみました。HTTPなら比較的簡単なのですが、勉強のためHTTPSでトライ。

ここでは例として、もともと https://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アクセスはなくなっていく方向になりそうですね。

サブドメインを作ろう! HTTPS バーチャルホスト設定覚書

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)