Memo plus Alpha

メモにプラスアルファを加えて価値ある情報に。

さくら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