SSL化したサイトの移転(ConoHa に無料独自SSLを事前設定)

SSL化したサイトを ConoHa Wing に移転したので、その際の作業手順の覚書です。

また、以下は 2021年5月時点での情報になります。

作成日:2021年5月16日

概要

今回移転したサイトは以下のようなサイトで、無料の証明書を利用して常時SSL化してあり、移行時にSSLエラーを発生させないようにする必要がありました。

サイト 構成(概要) 移行先 移行元
○○○.com 静的なページと WordPress で構築したサイト ConoHa Wing inMotion Hosting

以降の手順(作業)では DNS やネームサーバーの変更(サイトによっては WordPress の wp-config.php の編集など)を行うため、不安な場合はプロバイダの移転代行(有料)を使うのも1つの方法です。

大まかな移行手順

以下がサイトを移転させる大まかな移行作業の手順です。

  1. 移行先のサーバーを契約
  2. 移行先でドメインを追加
  3. 移行先でメールアカウントを作成(移行元と同じメールアカウントを追加)
  4. 移行先のメールサーバを指定してメールクライアントを設定し移行元のメールを移行先にコピー(※)
  5. 移行先のドメインに無料の SSL を事前に設定(※)
  6. 移行先にサイトを構築
  7. 動作確認 URL や hosts ファイルなどを使って表示を確認
  8. ネームサーバーの変更。ドメインのネームサーバーを移行先に変更(切り替え)。
  9. 必要に応じてドメインの移管を実施

無料 SSL の事前設定

5. の SSL の事前設定は移行時にSSLエラーを発生させないための工程です。

ネームサーバーの切り替え後に SSL を設定すると、反映されるまで時間がかかり、その間「この接続ではプライバシーが保護されません」というような SSL エラーになってしまいます。

Xserver などでは無料 SSL の事前設定の方法が用意されていて比較的に簡単に行なえますが、ConoHa では DNS やネームサーバーの変更が必要になります(ConoHa の場合、無料独自SSLを利用するにはあらかじめドメインのネームサーバーをConoHaのネームサーバーに設定する必要があります)。

移行元メールのコピー

4. の移行元のメールのコピーは ConoHa では「無料 SSL の事前設定」で DNS やネームサーバーの変更を行うので、今回はその前に行いました。

ドメイン移管

ドメインを移管する場合は、サーバーの移行が完了してから実施する方が効率的です。

ドメイン移管は申請してから完了するまで5日〜10日程度かかり、移管手続きが完了するまではネームサーバーや DNS の変更はできません。そのため、その間移行作業の一部ができなくなります。

切り替え

8. の「ネームサーバーの変更」の実際の切り替えでは問題が発生することを想定して、実施する日時を検討し、メインテナンス(切り替え)の周知、メインテナンス画面を表示するなどが必要になりますが、以下では省略しています。関連項目:メンテナンスページにリダイレクト

ConoHa Wing への移行例

ConoHa の場合、無料 SSL の事前設定を行うためには、ConoHa で設定したドメインの DNS に移行元の IP アドレスを設定し、ネームサーバで ConoHa のネームサーバを設定します。これにより、Web は移行元のサイトが表示されることになりますが、メールは ConoHa のサーバを見ることになります。

また、WordPress のインストールは ConoHa の用意しているアプリケーションインストールを使った方が簡単で確実です。

ConoHa ご利用ガイド:ConoHa WINGお乗換えガイド

以下が手順です。

  1. サーバーを契約
  2. ドメインを追加(SSL なしで設定)
  3. メールアカウントを作成
  4. メールを移行先にコピー
  5. ドメインのDNSレコードを変更(移行元のサーバーIPアドレスを設定)
  6. ネームサーバーを変更(ConoHa のネームサーバを設定)
  7. ドメインに無料独自 SSL を設定
  8. サイトを構築(WordPress のインストールやコンテンツのアップロード)
  9. hosts ファイルを編集して WordPress を復元
  10. 表示や動作を確認(hosts ファイルを元に戻す)
  11. DNSレコードを変更。移行元のサーバーIPアドレスから ConoHa に変更(切り替え)

※ 作業の順番はもっと効率良い方法があるかもしれません。

ドメインを追加

サーバーの申し込みが完了したら、移行するドメインを追加します。

ここでドメインを追加しても、移行元のドメイン(現在表示しているサイト)には影響はありません。

コントロールパネルへログインし、上部メニューの「WING」をクリックします。

左メニューの「サーバー管理」をクリックし、サーバー管理メニューの「ドメイン」をクリックします。

そして右上の「+ドメイン」をクリックします。

「SSLなし」で追加

「新規ドメインを追加」を選択し「ドメイン名」を入力します。

無料SSLの「利用する」を選択しても、この時点では適用されないので「利用しない」のまま「保存」をクリックします。

画面下に以下のようなメッセージが表示されます。

追加したドメインのステータスが「稼働中」になれば追加完了です。

ConoHa ご利用ガイド:ドメインを追加する

メールアカウントを作成

移行元でドメインのメールを使用している場合は、移行先に同じアカウントを作成します。

左メニューの「メール管理」をクリックし、メール管理画面の左メニューで「メール設定」を開きます。

そしてメールアドレスリストのページで右側の「+メールアドレス」をクリックします。

「メールアドレス」にメールアドレスの@より前の部分と「パスワード」にパスワード(8文字以上で半角英数字と記号を含める)を入力し、「容量」に利用可能な容量(10MB~10240MB)を入力し、「保存」をクリックします。

ConoHa ご利用ガイド:メールアドレスを作成する

メールを移行先にコピー(IMAP)

以下は IMAP の機能を使って移行元のメールのデータを移行先のメールサーバへ移行する例です。そのため、移行元のメールを IMAP で設定してあることが前提です。

この例ではメールクライアントとして Thunderbird を使用しています。

以下が概要です。

  1. 移行元のメールアカウントを Thunderbird に設定
  2. 移行先(ConoHa)で作成したメールアカウントを Thunderbird に設定
  3. Thunderbird 上で移行元サーバから移行先サーバへメールをコピー

ConoHa で設定したメールアカウントの情報は以下で確認できます。

左メニューの「メール管理」をクリックし、メール管理画面の左メニューで「メール設定」を開き、メールアドレスをクリックします。

「メールアドレス詳細」をクリックして展開します。

メールアドレスの情報が表示されます。

メールアカウントを作成した際のパスワードの情報と上記のメールサーバーの情報で ConoHa のメールアカウントをメールクライアントに設定します。

IMAP の受信サーバーのポートは993、送信サーバーのポートは465になります(SSLを使用する場合)。詳細は「ConoHa ご利用ガイド:Thunderbirdを設定する」に記載されています。

以下は Thunderbird にアカウントを追加する例です。

移行元と移行先の同じメールアカウント(例 info@example.com)を設定します。

移行元のメールアカウントの設定では、可能であれば、メールサーバーは mail.example.com のようなドメイン名を使ったものではなく、例えば securexxx.inmotionhosting.com のようなものであれば、ネームサーバーを切り替え後もアカウントを停止するまでは受信ができます。また、mail.example.com のようなアドレスの場合、DNS を変更すると iPhone や iPad に設定してある移行元のアカウントで「サーバの識別情報を検証できません」というようなエラーが出てしまう可能性があるので、タイミングなどを検討する必要があるかも知れません。

IMAP の場合、必要に応じて ConoHa の Web メールにアクセスして右上の「設定」をクリックしてフォルダなどを作成しておくこともできますし、Thunderbird 上でフォルダを追加することもできます。

左側の「設定」の「フォルダー」を選択して「+」をクリックしてフォルダを作成することができます。

メールをコピー

Thunderbird 上で移行元サーバから移行先サーバへメールをコピーします。

コピーするメールを選択して右クリックから「メッセージをコピー」を選択し、コピー先アカウントとフォルダを選択すればコピーすることができます。

以下は移行元のアカウント(inMotion)の「inquiry」フォルダのメッセージを全部選択して、移行先のアカウント(ConoHa)の「inquiry」フォルダにコピーする例です。

必要なメッセージをすべて移行先の ConoHa のアカウントにコピーします。

この時点では ConoHa のメールアカウントでの送受信はできませんが、ConoHa のサーバーにメールをコピーすることはできます。

メールが確かにコピーされているかは、ConoHa の Web メールで確認することができます。

ドメインのDNSレコードを変更

追加したドメインの DNS レコードに移行元(この例では inMotion)のサーバーのIPアドレスを設定します。

メニューから「DNS」をクリックし、追加したドメイン名の部分をクリックするとDNSレコード一覧が表示され、鉛筆のアイコンをクリックするとDNSレコードを編集することができます。

変更するのは以下の部分の「TTL」と「値(IP アドレス)」です。後で元の値に戻す必要があるのでメモしておきます。

タイプ 名称 TTL 値(IP アドレス)
A(通常) @ 3600(300 などに変更 xxx.xxx.xxx.xxx(移行元のIPに変更
A(通常) www 3600(300 などに変更 xxx.xxx.xxx.xxx(移行元のIPに変更

値(IP アドレス)の部分を ConoHa から移行元のサーバーのIPアドレスに変更します。

また、TTL は 300 など少し短めにしておくと良いかも知れません。DNS レコードの TTL(Time to Live)値を小さく設定することによって情報が参照されるまでの時間が早くなる可能性は高まりますが、環境によっては TTL 値が参照されないケースもあります。

移行元のサーバーのIPアドレスは移行元の管理画面(コントロールパネルの DNS 情報など)で確認します。

またはコンソール(ターミナル)で nslookup xxxxx.com などでも確認できます。

ネームサーバーを変更

ConoHa の場合、無料独自 SSL を利用するにはあらかじめドメインのネームサーバーを ConoHa のネームサーバーに設定する必要がるので、そのための変更です。

契約しているドメイン管理会社のネームサーバの設定を変更します(ConoHa のネームサーバーに変更)。

この例の inMotion の場合は Account Management Panel (AMP) で Domains → Manage Domains でドメインをクリックして Point your domain をクリックします。

※ もし問題が発生して、切り戻す場合を考えて、変更前の値をメモしておきます。

ConoHa のネームサーバーは以下になるので変更します。

  • ns-a1.conoha.io
  • ns-a2.conoha.io
  • ns-a3.conoha.io

この設定変更でドメインのネームサーバーは ConoHa になり、前述の DNS の変更で Web サイトは移行元になっているので、表示される Web は今までと同じ移行元のデータが表示されます。

但し、この例の場合、メールの DNS は ConoHa のまま変更していないので、メールサーバーは ConoHa のメールに変更されます。

また、ネームサーバーの変更が完全に反映されるまでには数時間から最大72時間程度かかるようです。

ドメインに無料独自 SSL を設定

ネームサーバーの変更が完了したら、ドメインに無料独自 SSL を設定することができます。

左メニューの「サイト管理」→サイト管理画面の左メニューで「サイトセキュリティ」を開きます。

続いて上のタブから「独自SSL」を選択して「無料独自SSL」を開いて「利用設定」を「ON」にします。

利用設定」を「ON」にして「受け付けました」と表示され、表示が「設定中」に変わり、その後設定が完了すると「利用中」に変わります。

この時点で以下のような「失敗しました」のエラーメッセージが出る場合は、ネームサーバーの変更が反映されていない可能性があるので、しばらくしてから「利用設定」を「ON」にします。

ドメインによってネームサーバーの変更後数分でONにできる場合もあれば、数時間待たなければならない場合もあります。

今回の場合、「受け付けました」と表示されるようになるまでに4時間ぐらいかかりました(メールサーバーは1時間ぐらいで切り替わっていましたが)。

そして「設定中」から「利用中」に変わったら無料独自 SSL の設定は完了です。「設定中」から「利用中」に変わるのにもある程度の時間がかかります(今回の場合は15分ぐらい)。

注意点

ConoHa の場合、SSL を設定すると自動的に https の URL へリダイレクトされるようになります。

そのため、独自に .htaccess 等で https へリダイレクト設定するとリダイレクトのループが発生しエラーになってしまいます。

ConoHa ご利用ガイド:無料独自SSL設定方法

サイトを構築

移行元のサイトのデータを ConoHa で構築します。

必要に応じてファイルマネージャーや FTP でデータ(コンテンツ)を ConoHa サーバーにアップロードします。

ConoHa ご利用ガイド:FTP/SSH

WordPress

ConoHa の場合、WordPress を簡単にインストールする機能「アプリケーションインストール」が用意されているので、それを使うのが簡単で確実です。

左メニューの「サイト管理」をクリックし、 サイト管理画面の左メニューで「サイト設定」を開き、上のタブで「WordPress」を選択します。

「+WordPress」をクリックし、「新規インストール」で WordPress をインストールできます。

URL ではサイトに合わせて www のありなしを選択します。

データベース名やユーザー名は自動的に表示される値を使うこともできますし、独自に名前を指定することもできます。

必要な情報を入力し、「保存」をクリックすると WordPress がインストールされ、以下のような画面が表示され、アクセス先の URL などが表示されます(但し、この時点ではネームサーバーを切り替えてないのでクリックすると移行元のサイトにアクセスします)。

ConoHa ご利用ガイド:WordPressをインストールする

データベース

作成されるデータベースの文字コードは utf8mb4 になり、サーバ接続の照合順序は utf8mb4_unicode_ci です。以下はインストール後のデータベースを phpMyAdmin で確認した例です。

ConoHa ご利用ガイド:データベース

以下は「新規インストール」を使って WordPress をインストールした場合に生成される .htaccess の例です。この例の場合は news というサブディレクトリに WordPress をインストールしています。

# BEGIN LiteSpeed
# "BEGIN LiteSpeed" から "END LiteSpeed" までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。
<IfModule Litespeed>
SetEnv noabort 1
</IfModule>
# END LiteSpeed
# BEGIN WordPress
# "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /news/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /news/index.php [L]
</IfModule>

# END WordPress
hosts を編集して WordPress にアクセス

ConoHa Wing に用意されている動作確認 URL では WordPress などの CMS の動作を確認することができないので、hosts ファイルを編集してインストールした WordPress にアクセスします。

hosts フィルを編集することで DNS を参照せずに ConoHa Wing 上の Web サイト(インストールした WordPress)にアクセスして操作することができます。

ConoHa ご利用ガイド:hostsを設定してWebサイトの動作確認をする

hosts フィルの最後の行に、ConoHa Wing の IPアドレスとホスト名を追加します。

www. を使っているサイトの場合は www. も含めたホスト名にします(関連ページ: hosts ファイルの変更が Chrome で反映されない)。

IP アドレスとホスト名は半角スペースやタブで区切ります。

##
# Host Database
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1	localhost
255.255.255.255	broadcasthost
::1             localhost
127.0.0.1	example.localhost
127.0.0.1	foo.localhost 
123.456.789.012 www.example.com  //移行先(ConoHa)IP アドレスとホスト名を追加

関連項目:hosts ファイルの編集

ConoHa Wing サーバーの IPアドレスは、メニューで「サーバー管理」をクリックし、左メニューで「契約情報」を選択し、「サーバー情報」の「スペック」確認することができます。

hosts ファイルを編集して保存すると、hosts ファイルを編集した PC からのみ ConoHa Wing 上のサイトにアクセスできるようになります。

WordPress を復元

hosts ファイルを編集したら、インストールした WordPress にアクセスします。

管理画面にログインして「設定」の「一般」を確認すると、「WordPressのアドレス」と「サイトアドレス」が実際のアドレスになっていて、プロトコル部分は https になっていると思います。

All-in-One WP Migration などのバックアップのプラグインを使ってサイトを復元します。

エラーが発生した例

独自に WordPress をインストールした際に発生したエラーについての覚書です。

エラーが発生したサイトの場合、マルチサイトのため手動でデータベースをインポートする必要があり、以下のような手順でデータを移行しました。

  1. 移行元のデータベースをエクスポート
  2. 移行元のデータをダウンロード
  3. ConoHa にデータをアップロード
  4. ConoHa にデータベースを作成してエクスポートした移行元のデータをインポート

リダイレクトループのエラー

切り替え後、サイトを確認すると以下のようなエラーが表示されました。

このページは動作していません (または ページの自動転送設定が正しくありません)

xxxx.com でリダイレクトが繰り返し行われました。

Cookie を消去してみてください.

ERR_TOO_MANY_REDIRECTS

解決方法

wp-config.php の require_once(ABSPATH . 'wp-settings.php'); の記述より上に以下のコードを追記してリダイレクトループは解消しました。

if(isset($_SERVER['HTTP_X_FORWARDED_PROTO']) and $_SERVER['HTTP_X_FORWARDED_PROTO'] === "https") {
  $_SERVER['HTTPS'] = 'on';
}

関連項目:リダイレクトループのエラー

表示・動作確認

復元したサイトの表示や動作を確認し、問題がなければ hosts ファイルを元に戻します。

もし「hosts ファイルを編集して、また元に戻す」を繰り返す場合は、追加した部分を # でコメントアウトすると簡単です。

##
# Host Database
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1	localhost
255.255.255.255	broadcasthost
::1             localhost
127.0.0.1	example.localhost
127.0.0.1	foo.localhost 
#123.456.789.012 www.example.com  //コメントアウト(※最終的には削除)
$_SERVER['HTTPS']

ConoHa Wing の場合、SSL化されていても PHP の環境変数 $_SERVER['HTTPS'] の値は空になってしまうようで、SSL化されていても以下のコードは「http://」を返します。

<?php echo (empty($_SERVER["HTTPS"]) ? "http://" : "https://"); ?>

このため、PHP で $_SERVER['HTTPS'] を使っている処理の部分などがある場合は確認した方が良いかと思います。

今回の移転で修正が必要になった具体的な箇所としては、$_SERVER['HTTPS'] の値を利用した 404.php のリンク(スタイルシートの読み込みなど)やコンタクトフォームの URL(フォームの送信先)、動的に生成している JSON-LD の構造化データマークアップ(パンくずリスト)などがありました。

対策としては、エラーが発生した例と同様に、その処理の前に以下を記述すれば、SSL化されている場合は文字列の「on」が返るようになり、empty($_SERVER["HTTPS"]) は false になります。

if(isset($_SERVER['HTTP_X_FORWARDED_PROTO']) and $_SERVER['HTTP_X_FORWARDED_PROTO'] === "https") {
  $_SERVER['HTTPS'] = 'on';
}

DNSレコードを変更(切り替え)

ConoHa に構築したサイトの表示や動作に問題がなければ、「ドメインのDNSレコードを変更」で変更した DNS を元に戻します。

以下の変更した「TTL」と「値」を元の値に戻します。

タイプ 名称 TTL 値(IP アドレス)
A(通常) @ 3600(3600 に戻す xxx.xxx.xxx.xxx(ConoHa のIPに戻す
A(通常) www 3600(3600 に戻す xxx.xxx.xxx.xxx(ConoHa のIPに戻す

ConoHa のサーバー IP アドレスは、メニューから「サーバー管理」をクリックし、左メニューで「契約情報」を開き、「サーバー情報」の「スペック」で確認することもできます。

TTL の設定を短くすると、伝播の速度が上がる場合がありますが、ネームサーバーのクエリ回数も増えるため、サイトのパフォーマンスが下がる可能性もあるので、短くした場合は元の値に戻します。

変更後「保存」をクリックして「成功しました」と表示されれば OK です。

DNS の切り替えも反映されるにはある程度の時間(数時間から24時間程度)がかかります。そのため、切り替え後は時間をおいて何回か確認します。

※ hosts ファイルが元に戻っている(追加した ConoHa の行が削除されている)必要があります。

DNSレコードを変更後、ある程度時間をおいてサイトの表示や動作、メールの送受信を確認して問題がなければ完了です。必要に応じてドメインの移行などを実施します。

※ 移行元のデータはすぐには削除せず、しばらくは保存しておきます。また、メールクライアント側でも移行元のメールの設定はしばらくそのままにしておくのが良いと思います。

コンテンツキャッシュに注意(リダイレクトエラー)

追記:2021年6月24日

ConoHa には Web サイトのページをキャッシュして表示を高速化するコンテンツキャッシュ機能があり、デフォルトでは「ON(静的コンテンツのみ)」になっています。

コンテンツキャッシュをデフォルトの「ON(静的コンテンツのみ)」のままにしておいたところ、しばらくしてリダイレクトエラーが発生してしまいました。

www あり・なしの正規化が効かない

今回移行した3つのサイト全てで発生したのですが、それぞれのサイトで .htaccess を使って www あり・なしの統一(正規化)を実施して移行した時点では問題なく動作していました。

以下が .htaccess に記述した正規化の部分です。

www ありに統一する例
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

例えば、https://www.example.com が正規化された URL である場合、以下のアドレスにアクセスすると全てこの URL にリダイレクトされる設定です。

  • http://www.example.com
  • https://example.com
  • http://example.com

※ConoHa の場合、SSL を設定すると自動的に https の URL へリダイレクトされるようになるので、http から https へのリダイレクトは不要です(記述するとエラーになります)。

コンテンツキャッシュを OFF

ConoHa のサポートに問い合わせたところ、「コンテンツキャッシュのOFFや独自に導入されているキャッシュプラグインなどがございましたら設定の変更や停止などをお試しいただけますでしょうか」とのことだったので、全てのサイトでコンテンツキャッシュを OFF にしたところ、全て正常に戻りました。

関連ページ:ConoHa で www あり・なし統一(正規化)が効かなくなる

ConoHa コンテンツキャッシュ関連ページ