さくらVPSで複数のサブドメインをSSL化する(HTTPS接続)
はじめに
さくらVPSでサイトをSSL化(HTTPS化)したときのメモです。先人たちの知恵を拝見しつつ、やっただけなので、ウェブ上に情報はたくさんありますが、メモとして…。
前提
前提条件として、すでにサーバーが稼働しており、ドメインを割り振った状態とします(ドメインの移行についてはこちらを参照)。なお、今回はUbuntuがOSです。
証明書の取得
SSL化に必要な証明書を取得します。今回はLet's Encryptを利用します。
証明書はワイルドカード指定で複数のドメインに対応できるようですが、今回はサブドメインごとに取得します。
サーバーにSSHで入って:
sudo certbot certonly --webroot -w /var/www/html/cvla -d site1.example.com
sudo certbot certonly --webroot -w /var/www/html/cvla -d site2.example.com
sudo certbot certonly --webroot -w /var/www/html/cvla -d site3.example.com
いろいろとメッセージが出てきますが、従いつつ進めます。Congratulations!とでれば成功。
いちおう証明書ファイルの有無を確認します。
sudo ls -al /etc/letsencrypt/live/site1.example.com
この中に.pemという拡張子のファイルがいくつかあるはずです。
設定ファイルをいじる
/etc/apache2/sites-available/に移動
・まずはバックアップ
sudo cp default-ssl.conf default-ssl.backup.conf
・デフォルトファイルの設定を変更
(1)default-ssl.confの以下をコメントアウトあるいは削除
<virtualhost _default_:443>
~
</virtulahost>
(2)以下を追記
NameVirtualHost *:443
・サブドメインごとにファイルを設定
※site1~3について同じことをする
#ファイルをコピー
sudo cp default-ssl.conf site1-ssl.conf
#ファイルを編集
sudo vi site1-ssl.conf
(1)
<virtualhost _default_:443>→<virtualhost *:443>
→virtualhost _default_を*に変更
(2)
ServerName site1.example.com:443
→これを追記
(3)
SSLCertificateFile /etc/letsencrypt/live/site1.example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/site1.example.com/privkey.pem
→この部分を編集
(4)
# 42行目:コメント解除して編集
SSLCertificateChainFile /etc/letsencrypt/live/site1.example.com/chain.pem
ファイルを有効化しサーバーを再起動
sudo a2ensite site1-ssl.conf
sudo systemctl reload apache2