【KUSANAGI】WordPressのマルチサイト機能で使っているサブドメインにSSLを適用する方法

WordPress 基本

KUSANAGIはコマンド一つでLet’s EncryptのSSLを発行できます。

ConoHa VPSのかんたんKUSANAGIならSSH接続することなくConoHaコントロールパネルからSSLを有効化(自動更新混み)できるのでとてもカンタンです。

ですが、KUSANAGIで運用しているWordPressのマルチサイト機能を有効化し、サブドメイン型マルチサイトを構築した場合は話が変わってきます。

このサイトもKUSANAGIで運用かつWordPressのマルチサイト機能を有効化、そしてサブドメイン(acceliv.com)で運営しているわけですが、KUSANAGIのコマンドだけだとSSLが割り当てられません。

かといって、KUSANAGI関係なく使われているLet’s Encryptのクライアントcertbotを使う方法も、マルチサイト機能を有効化しているからか上手くいかず。

ですが、KUSANAGIのSSL証明書発行用スクリプトファイルを編集することで、サブドメインにもSSL証明書を設定できたので解説していきます。

サブドメインにもSSL証明書を設定する

サブドメインにもSSLを設定する場合はKUSANAGIのSSL証明書を発行するスクリプトの一部を書き換えます

設定用スクリプトを開く

SSL証明書を発光しているスクリプトは/usr/lib/kusanagi/lib/ssl.shです。これをvimなどで開いて編集します。

vi /usr/lib/kusanagi/lib/ssl.sh

テキストエディタで開いたら、if [ “renew” = “$OPT” ] となっている行(120~140行目の間ぐらい)

このif文の下に下記コードを追加します。

OPTION="-d <サブドメイン>.$FQDN $OPTION"

例えばサブドメインが”sample”ならOPTION=”-d sample.$FQDN $OPTION”です。

サブドメインが複数ある場合は、サブドメイン数ぶんだけ行を分けて入力してください。

入力したら保存します。

SSL証明書の再発行

設定を変更しただけではサブドメインにSSL証明書は発行されません。一度証明書を発行し直す必要があります

SSL証明書は発行から60日経過しないと再発行できないため、SSL証明書を発行するコマンドだけだと今回追加したサブドメインにSSLが発行されないことがあります。

ですので、一度発行済SSL証明書を無効化してから新しい証明書を発行します。

まずは下記コマンドでSSL証明書を無効化します。

/usr/local/certbot/certbot-auto revoke --cert-name ドメイン名

ここのコマンドで入力する”ドメイン名”はサブドメインではないことに注意してください。

例えば”sample.acceliv.com”なら”acceliv.com”がドメイン名です。

無効化したら下記コマンドでSSL証明書を発光します。

kusanagi ssl --email メールアドレス

この方法ならSSL証明書の有効期限が近づいてもKUSANAGIが勝手に更新してくれるので安心です。

ワイルドカード指定はできない

KUSANAGIでSSL証明書を発行する場合、ワイルドカードは指定できないようです。

といってもサブドメインを毎日何十個も作成するような方はいないと思いますので、特に問題ないでしょう。

サブドメインが増えたらまた設定を変更してSSL証明書を発行したらいいだけです。

適切にリダイレクトされないときの対処法

サブドメイン型マルチサイトのサブドメインにSSLが設定されない段階でうすうす感づいた人がいるかもしれませんが、SSLリダイレクトに関してもサブドメインでは正常に動作しないことがあります。

下記ページで対処法を解説していますので、サブドメインの非SSLページ(例:http://acceliv.com)を開いたらなぜかサブドメインではないドメイン(例:https://acceliv.com)にリダイレクトされる症状が発生する場合は参考にしてください

403 Forbidden
関連記事
Acceliv