WordPressの引っ越し(システム移行編)

2022年5月29日

前回、引っ越しのデータ移行までお話してきました。
WordPressのデータの引越しが終わり、ブラウザからIPアドレスによるアクセスでWebサイトが表示出来るところまで書いていきました。
今回は、その続きでSSL化してドメインでアクセス出来でき、サイトの引越しが完了するところまでまとめていきたいと思います。

ドメインの切り替え

え?SSL化もしていないのにドメインを切り替えてしまうの?と思われますが、そのとおりです。
本来であれば、SSL化した後に最後にドメインを切り替えることによって、Webサイトが見れない時間を防ぐことが定石です。
今回、なぜそれを諦めたかというと、前回の記事でも触れましたが、引越元環境のロリポップのレンタルサーバにおいて、私の契約していたプランの問題か、サーバ証明書がロリポ上のホームディレクトリで見つけられなかったことが原因です。サーバ証明書が入手できないため、ロリポで取得したサーバ証明書をそのまま使い続けることができず、新たに取得する方法を取ることにしました。

無料のサーバ証明書

世の中には、SSL通信を行うためのサーバ証明書が有料なものから無料のものまで様々なものがあります。
ちょっと探してみただけでもこれだけあります。大昔は有料なもので以下に安いものを探すかがキーポイントでした。
とはいえ、有料のサーバ証明書をこの野良サイトレベルで使うこともないため、無料のサーバ証明書を取得しようと考えました。ちなみに探せば無料のサーバ証明書は他にあるかもしれません。ただ、あまりにマイナーな認証局のサーバ証明書だとブラウザにルート証明書が入っていなかったりとオレオレ証明書状態になることは避けたく、最低限Chromeでは問題なく使えるものを選びました。
普通に考えたらLet’s Encrypt一択なのでしょうが、今回はすでに引越元でLet’sEncryptのサーバ証明書を取得済み(同じドメインで取得)しているので、同じLet’sEncryptで同じドメインに対して別の申請経路からサーバ証明書って発行できないのではないか?(試してないので大丈夫かもしれない)。とも思ったり、せっかくだから新しいやつ使ってみたいという安易な考えで、ZeroSSLを使ってみることにしました。

Let’s Encrypt昨今のデファクトスタンダードとなりつつある機関3ヶ月更新
Zero SSLLet’s Encryptよりは後発ですが無料のサーバ証明書を発行してくれる機関3ヶ月更新
WoSign Free SSL Certificate中国のサービスのようです。Google先生で調べているときに見つけました。試してはないですがどうなんでしょうか。1年更新

ZeroSSLでサーバ証明書を取得する

ZeroSSLでサーバ証明書を取得するには難しいことは一切ありません。基本的にWebブラウザ操作だけでサーバ証明書の発行までできます。
Let’s Encrptとはことなり、無料のアカウントを登録する必要があることは気をつけた方が良いです。アカウント作成は無料でできるのでそこまでハードルは高くはないです。

まず、ログインしたら、ホーム画面で、「New Certificate」をクリックします。

つぎに、取得したいドメイン名を指定して、「NextStep」をクリックします。
このときにワイルドカード証明書は無料ではないので注意してください。このあとも「PRO」とアイコンがあるものは有料なので気をつけてください。間違って選択しても、そのうち決済画面が表示されるので気づくと思います。

つぎにValidity(有効期間)を選択します。ここでも「PRO」の1年は有料なので、無料の「90-Day Certificate」を選択して、「Next Step」をクリックします。

ここでは、証明書が切れる前に連絡くれるというオプションなので、そのまま「Next Step」をクリックします。通知がほしくない場合は無効にします。

ここで、無料なのか有料なのかを聞かれるので「Free」が選択されていることを確認して「Next Step」をクリックします。(NextStepの画像見切れていてすいません。。)

次に、サーバ証明書発行においての認証方法をどうするかを聞かれます。今回は、「HTTP File Upload」を選択しました。EメールやDNSでも問題ありません。

Email VerificationEメールを使った認証です。取得したいドメインのメールアカウントを持っているならばこの選択でも良いかもしれません。私の場合は、「admin@ticktack.biz」のようなメールアカウントを持っていないので、選びませんでした。ちなみにメールアドレスはadminやwebmasterなどのメールアドレスの前はZeroSSLでいくつか指定されたものから選ぶ必要があり、新規にメールアカウントを作れる権限がないと厳しいかもしれません。
DNS(CNAME)
サーバ証明書を発行したいドメインに対して、ZeroSSLが指定したドメイン情報(CNAME)を登録して、そのドメインがDNSの問い合わせで存在することで認証できる仕組みなのですが、私が契約しているDNSではDNSの仕様(「_」がつくドメイン情報が登録できない)でドメイン情報の登録がうまく行かなかったです。
HTTP File UploadWebサイトにZeroSSLサイトから指定のファイルをダウンロードし、そのファイルがZeroSSLが指定したURLでアクセスできることで認証完了とする仕掛けです。

私が今回、SSL化する前にドメインを切り替えた理由は「HTTP File Upload」認証を通す必要があったからです。ドメインはSSL化された状態で、ロリポ先生のサーバを向いていました。また、ロリポはサイト全部をSSLで暗号化していた都合上、HTTP(暗号化なし)のアクセスは許可されていませんでした。
一方、ZeroSSLの認証用URLは上記のイメージの通りHTTPとなるので、SSL化していない状態のサイトを作る必要がありました。
そのため、ドメインを引越前サイト(ロリポ)を向いているものから、引越し後のHTTPアクセスできるWebサーバに切り替えてから、この認証を通しました。
ドメインさえ切替てしまえば、上記のURLの通りの場所におくだけです。
具体的には、Web画面の指示に従い、以下の操作します。
①「Download Auth FIle」をクリックしてダウンロードします。
②引越し先のWebサーバのホームディレクトリに指示された「.well-known」フォルダを作り、そのフォルダ内にさらに「pki-validation」フォルダを作成し、そこに①でダウンロードしたファイル「2F***.txt」を配置すればそれでOKです。
③のURLをクリックして、ダウンロードしたファイルと同じ内容がブラウザに表示されたらそれでOKです。


準備が整ったら、「Next Step」をクリックすると、以下の「VerifyDomain」が表示されたら、「VerifyDomain」をクリックします。

認証OKとなるとサーバ証明書ファイルがダウンロードできるので、ダウンロードした証明書をWebサーバの暗号化キーとして登録すればOKです。

サーバ証明書の注意点

サーバ証明書に関してですが、以下のイメージのようにダウンロードしたサーバ証明書ファイルは以下のように3ファイル構成となっています。
Webサーバによってはサーバ証明書と中間証明書を一つにする必要があるので、その場合は、中間証明書ファイル「ca_bundle.crt」のファイルの内容をサーバ証明書ファイル「certificate.crt」の下に追記して一つのファイルにまとめてください。まとめたファイルと、秘密鍵「private.key」をWebサーバのSSL設定部分のそれぞれ指定してください。
ちなみに、ZeroSSLはサーバ側のSSL設定を行い、SSL通信が確認取れるまでがSSL発行の一連のウィザートとなっているので、一気にやってしまいましょう。

#こんな感じのcatコマンドで2つのファイルを開いて、新しいファイル名で書き出しでOK
$ cat certificate.crt ca_bundle.crt > server.crt

おわりに

ZeroSSLの無料サーバ証明書はLet’s Encryptと同様に90日間しか有効になりません。
そのため、3ヶ月おきにサーバ証明書を更新する必要があります。
毎回、今まで説明してきた作業を行うのは厄介なので自動化したいところです。この話はまた、3ヶ月後に試した結果を記事にしたいと思います。
ちょと調べた感じだとLet’s Encryptと同じくcertbot的な自動的に証明書を更新してくれるツールが使えそうですね。
ZeroSSLは今回始めて使ったので、正直自動化できる情報はあるものの実際に試していない状態なので、体験談を踏まえて書いていきたいと思います。
それではまた。

Tips

Posted by Qtaro