SSL (https) 化した後でのサーバ移転は大変だった件

この度 joytokey.net を新しいサーバに移転しました。

ところが思いのほか手間取ったので、将来の忘備録に、また誰かの役に立てばと思い、記録しておきます。

今思えば、httpsに移行する昔はサーバ移転するのは比較的簡単だったように思います。簡略化してしまえば、大きく以下の3ステップでできました。

  • データを新しいサーバにコピー
  • 新しいサーバ上で正しく表示されるか確認
  • ネームサーバ・DNSレコードの変更をして、サーバを切り替え

ところが、最近は常時 SSL(https)化するのが常識になっています。

その場合、せっかくデータを完璧に移行しても、上記ステップ2が動かないのです。

なぜ新しいサーバで動作しないのか

https 化するとき、普通は .htaccess などをもちいて、http で来たリクエストを https にリダイレクトする設定になっていることと思います。

なので、新しいサーバで動作確認しようとしても https にリダイレクトされてしまうわけです。ところが、新しい移行先のサーバ上では有効な SSL 証明書がまだないため、https 通信がエラーになってしまいます。

じゃあ新しいサーバで無料SSLを有効にすればいいじゃないかと思うわけですが、それがなかなか大変なわけです。多くのレンタルサーバの場合SSL証明はドメイン単位で認証となるため、新しい移行先のサーバがドメインで参照できるようになっていないと(つまりネームサーバ・DNSレコードを切り替えてからでないと)、SSL有効化ができない・エラーになってしまうようです。

ダウンタイム無しで移行できるのか?

いろいろ調べてみたところ、常時SSL化してあるサイトを移転したい場合は、以下のどれかの方法を取るしかないようです。

  1. 多少のダウンタイムを覚悟して、ぶっちゃけ本番でDNSを切り替えてから、新しいサーバで証明書をインストール
  2. 古いサーバで一度  http に戻してから、新しいサーバに移転して、その後また https 化する
  3. 新しいサーバでなんとか事前にSSL証明書をインストールしておき、https のまま移転

ダウンタイム(エラー)が発生するのを許容できるのであれば、方法1が一番簡単ではあります。ただ、DNS情報が伝搬してから、その後さらにSSL証明書を有効化するのに時間がかかるため、最大数日程度アクセスがエラーになってしまう可能性があります。

方法2は SEO 的に悪影響が出そうなのと、またリンクされているページ・画像などが表示できなくなってしまう可能性があるので、あまりお勧めできないような気がします。

方法3は手間(もしくは費用)がかかりますが、ダウンタイム無しで移行できるはずです。

自分は2つのサイトを移行する必要があったので、

  • jtksoft.net は(悲しいことにほとんどアクセス無いので)簡単な方法 1 で
  • joytokey.net は手間はかかるが安全な方法 3 で

試してみました。

ぶっちゃけ本番で jtksoft.net を移行してみた(方法1)

とりあえず新しいサーバにデータコピーが終わった後、.htaccess での https リダイレクトだけコメントアウトしてみました。そうすれば、http でアクセスすれば、SSL証明書なしでも最低限の動作チェックはでき、またDNS切り替え中・また直後でも http プロトコルでならアクセスできることになります。

早速ネームサーバを切り替えた後、たまたまラッキーなことに10分程度で移転先のレンタルサーバ業者に浸透したようで、無料SSLの手続きを完了できました。ただ直後は https はまだエラーになり、その後30分程度で https でアクセスしてもエラーが発生しなくなりました。

つまり、ネームサーバを切り替えてから、1時間弱ぐらいの間に移行が完了したことになります。その間にアクセスした方達には、無効なURLやら、無効な証明書やらのエラーが発生したことになります。

ただし、これはとてもラッキーだったケースで、以下のもう一つのドメインでDNSを切り替えた場合は、移転先のレンタルサーバ業者まで反映されるのに半日以上かかったので、つまり無料SSL手続きを半日以上できなかったことになるので、ダウンタイムは半日以上かかってしまっただろうことになります。これは精神衛生上あまりよくありません。

事前に SSL 証明書を導入してから joytokey.net を移行してみた(方法3)

もう一つのドメイン joytokey.net の方は、毎日多くの方が訪れてくれるので、ダウンタイムは極力さけたかったです。なので、事前に移行先のサーバにSSL証明書を導入しておく(上記方法3)方法を取りました。

とはいえ、DNSを切り替える前にSSL証明書を導入するのはそんなに簡単ではないようです。

レンタルサーバの業者によっては、SSL証明書の持ち込みに対応している場合があります。そのようなラッキーな場合は、「稼働中の無料SSLサイトの移転!httpsのままでサーバー移転する方法!」に詳しく方法が書いてあるので、やってみてください。無料でできます。

https://deaimobi.com/ssl-site-iten/

ただ、今回の移転先(エックスサーバー)では、SSL証明書の持ち込み非対応でした、、、

その場合は、有料SSLを契約することで事前に導入することができました。有料SSLはメールを使ったドメイン認証もできるためです。詳しくは「エックスサーバーへSSL(https)サイトを移転する際の注意点」をご参照ください。有料とはいっても年1080円で、エラーなく(精神衛生上ストレスなく)移行できるので、安いものです。

https://miyazakilife.com/web/7558/

実際に移行した際の記録ですが、有料SSLを事前に導入後、ネームサーバを切り替えたのが前日の 22:30 頃。その後 8 時間経った翌日 6:30 でも、まだエックスサーバおよび自宅のネットワークではDNSが切り替わっていませんでした。

8:30頃(10時間経った頃)、ようやくスマホのネットワークでは切り替わっているのを確認できました。証明書を元々インストールしていたので、もちろんエラーも無く無事にアクセスできました。ふぅ~、大成功です。

これが、もしも事前にSSL証明書を導入していなかったら(方法1を取っていたら)と思うとゾッとします…。DNS切り替えをこちらで確認するのに10時間程度かかっており、かつその後無料SSLの手続きをしてもさらに時間がかかるため、トータルでは半日以上エラーが発生していた可能性があります。

結論

DNS 変更が浸透するのにかかる時間は最大24から72時間程度かかりうるので、jtksoft.net を方法1で移行した際に1時間弱で完了した今回はラッキーだったと言えます。しかし、ラッキーでなかった場合は、SSL証明書なしの状態で移行すると最悪1日から数日程度エラーになってしまう可能性があるので、大事なサイトを移転するときは、手間や多少の費用を惜しまずに、事前に新しいサーバにSSL証明書を導入しておくのを強くお勧めします。

スポンサーリンク

シェアする

フォローする