Webサイトを運営する場合、レンタルサーバのDNSを使用することが多いと思います。特に、独自無料SSL(Let’s Encrypt)を利用する場合は認証の関係で別DNSを使うとややこしくなりがちです。
とはいえ、場合によってはレンタルサーバのDNSが使えないこともあります。例えば、次のような場合です。
- 現に稼働中のドメイン。エックスサーバーに引っ越す予定でそのために事前にSSLの準備をしたい。
- エックスサーバーのDNSでは機能不足(NSレコードが使えない)。
こういう用途では、エックスサーバー以外のDNSを使用せざるを得ません。
ここでは、エックスサーバーで他のDNSを使用しつつ無料独自SSLを使う方法を手順を追って説明します。
大まかな流れ
まず、前提として、DNS関連は次のようになっているとします。
- ドメイン名: xsrvfreessl.tk
- ネームサーバ: ns01.freenom.com(他)
- IPアドレス
ホスト名 | レコード種別 | 内容(IPアドレス) |
---|---|---|
xsrvfreessl.tk | A | 219.94.162.44 |
www.xsrvfreessl.tk | CNAME | xsrvfreessl.tk |
sub1.xsrvfreessl.tk | CNAME | xsrvfreessl.tk |
上のドメインはFreenomで取得したものであり、ネームサーバもFreenomのものを使用しています。また、xsrvfreessl.tkのIPアドレスはさくらのレンタルサーバのものです。サブドメインはxsrvfreessl.tkの別名としてCNAMEで定義しています。
このドメインでのサイトをエックスサーバーに引っ越すために事前に無料独自SSLの用意を行うという流れで説明して行きます。
無料独自SSLの設定
エックスサーバーでの無料独自SSLの設定手順は、公式のオンラインマニュアルにあります。
基本的にはこの手順に沿って行うのですが、すんなりとは行きません。すんなりと行くのなら、わざわざこういうページを作る必要はないわけで。
では、ネイキッドドメイン(裸のドメイン)と、サブドメインとの場合でそれそれ設定していきます。
ネイキッドドメイン
まず最初にホスト名の付かないネイキッドドメインに対して無料独自SSLを設定します。
また、エックスサーバーでは、ネイキッドドメインに無料独自SSLを設定すると、wwwが付いたサブドメイン(ホスト)にも無料独自SSLが同時に設定されるようになっています。
ドメイン持込み(ドメイン設定)
まず最初に、ドメインの設定を行います。
これは通常の手順です。
ここで「無料独自SSLを利用する(推奨)」にチェックを入れているので、新規に取得したドメインであればこのまま無料独自SSLも一緒にしてくれます。非常に楽です。
しかし、今回はすでに他で運用中のドメインを持ち込むという話です。この場合は、このチェックを入れていても上手くいきません。そのため、このチェックは外した方が良いのですが、ここではチェックを入れているどどうなるかを見ていきます。
このまま「確認画面へ進む」を押します。しばらく時間がかかります(おそらく、無料独自SSLの設定に失敗するためではないかと思います)。
「ネームサーバーがエックスサーバーの指定のものになっていません」という警告が表示されます。今回は一番下の「他社サーバーからの移転の場合」に該当します。その説明にある通り、このまま「追加する」を押します。
想定通り、無料独自SSLの設定に失敗しました。が、ドメインの持ち込み自体は完了しています。このように失敗するのがわかっているので、「無料独自SSLを利用する(推奨)」のチェックは外して登録した方が良いと思います。
SSL設定
ここから、改めて無料独自SSLを設定していきます。
「独自SSL設定追加」タブを開きます。
サイトの内容を念の為チェックし、「確認画面へ進む」を押します。
ここで警告が表示されますが、意味合いとしては先程のネームサーバに関する話と同じです。
認証方式として三つの選択肢があります。
- ネームサーバーを変更して認証
- 外部サーバーでのWeb認証
- 外部ネームサーバーでのDNS認証
今回はエックスサーバーのネームサーバーを使わずに(使えない)という条件なので、一つ目の選択肢は選択できません。
当初は三つ目の外部ネームサーバーでのDNS認証を試みたのですが、残念ながら上手くいきませんでした。これを行うには、指定されたトークンをネームサーバにDNSレコードとして設定します。ご存知の通り、DNSへの設定はそれが反映されるまでに時間がかかります。そうしているうちにエックサーバーの管理画面から自動ログアウトしてしまいます。再ログインするとトークンが変更され、先程のものは無効になります。改めてトークンをDNSに設定し直すことになるのですが、そうすると変更したものが反映されるまでに時間がかかり…ということを繰り返してしまいます。結局、この方法は上手くいきませんでした。
そのため、二番目の選択肢の「Web認証」で行うことになります。
この選択肢を選ぶと上のようにトークンファイルのダウンロード画面が出てきます。指示通り、二つのトークンファイルをダウンロードします(「ダウンロード」ボタンを押します)。
ダウンロードしたトークンファイルを現在稼働中のサーバ(ここではさくらのレンタルサーバ)の所定の場所にアップロードします。「.well-known/acme-challenge」というディレクトリはおそらくないでしょうから、作ります。
そこにダウンロードした二つのトークンファイルをFTPなどでアップロードします。このサーバではWWWなし・あり共に同じ場所を見るようになっているので、同じディレクトリにアップロードしましたが、もし、それぞれが別であれば、然るべき場所に置きます。
念の為、実際にアクセスしてファイルが開くことを確認します。
こんな感じでファイルの中身が見えればOKです(ファイルダウンロードのダイアログが出てくる場合は、実際にダウンロードしてファイルの中身が見られればOK)。
「確認画面へ進む」を押します。
「追加する」を押します。
文字通り、しばらくかかります。
認証作業が終りました。先程アップロードしたトークンファイルは削除しても構いません。
「戻る」を押します。
あとは「反映待ち」が消えるのを待つだけです。
サブドメイン
続いて、サブドメイン(sub1.xsrvfreessl.tk)での無料独自SSLの設定です。
サブドメイン設定
ネイキッドドメインの場合と同じように、最初にドメインの設定を行います。これはエックスサーバーにサブドメインを設定する際の極普通の手順です。
「サブドメイン設定追加」タブを選択します。
サブドメイン名(ホスト名)を入力します。「無料独自SSLを利用する」のチェック外します(ネイキッドドメインでの設定で確認したように、これは失敗することがわかっているので)。「確認画面へ進む」を押します。
「追加する」を押します。
サブドメインの追加作業自体は以上です。
SSL設定
では、いよいよ無料独自SSLの設定です。
SSL設定の画面を開き、「独自SSL設定追加」タブを選択します。
対象のサイト(サブドメイン)、つまり、今しがた追加したものを選択し、「確認画面へ進む」を押します。
ネイキッドドメインでの場合と同じように、「外部サーバーでのWeb認証」を行います。
トークンファイルをダウンロードします。
ダウンロードしたトークンファイルを引越し元のサーバの所定のディレクトリ(.well-known/acme-challenge)にアップロードします。
Webブラウザでアクセスできることを確認しておきます。
「確認画面へ進む」を押します。
「追加する」を押します。
サブドメインへの無料独自SSLの設定作業はこれでお終いです。「戻る」を押します。
「反映待ち」が消えればSSLが使用できます。
サブドメインだけを無料独自SSL化する
ここまでのな話を改めて見直していたところ、サブドメインだけを無料独自SSLの設定ができるのではないかと思えてきました。これについてはここに一緒に書くとわかりづらくなるので、別記事にしました。こちらをご覧ください。
DNS の変更
【注意】
サイトの引越しを行う場合は、DNSを変更する前に、引越した内容が正常に表示できるか、新たな書込みで問題はないなど、確認しておきます。それに関してはこちらの記事も参考にしてください。
【注意ここまで】
上記の手順で、無料独自SSLの設定はできました。しかし、これで終りではあリません。理由は二つ。
- サーバを引っ越すのだから、どのみちDNSの変更は必須
- 無料独自SSLの自動更新のため
一つ目の理由は自明ですね。
問題は二つ目。無料独自SSL(Let’s Encrypt)は証明書の有効期限が90日です。期限前に更新作業を行う必要があります。多くのレンタルサーバーでは、その更新作業を自動で行ってくれるようになっています。エックスサーバーでももちろん自動更新してくれます。
しかし、ここまでの作業だけですと、自動更新ができません(エラーになります)。これを解決するには、二つの方法があります。
- エックスサーバーのDNSを使う
- DNSで当該ホストをAレコードでエックスサーバーのIPアドレスを指定する
エックスサーバーでサイトを運営する場合は、通常はエックスサーバーのDNSを使用するでしょうから、特段何も考えることなく無料独自SSLの自動行使が行われます。しかし、今回はエックスサーバーのDNSを使わない(使えない)という条件ですので、一つ目の選択肢は自動的に除外されます。
そこで、後者の「DNSでAレコードを設定する」という手段を取ります。
元々はこういう設定でした(再掲)。
ホスト名 | レコード種別 | 内容(IPアドレス) |
---|---|---|
xsrvfreessl.tk | A | 219.94.162.44 |
www.xsrvfreessl.tk | CNAME | xsrvfreessl.tk |
sub1.xsrvfreessl.tk | CNAME | xsrvfreessl.tk |
これを次のように変更します。
ホスト名 | レコード種別 | 内容(IPアドレス) |
---|---|---|
xsrvfreessl.tk | A | 103.141.97.87 |
www.xsrvfreessl.tk | A | 103.141.97.87 |
sub1.xsrvfreessl.tk | A | 103.141.97.87 |
103.141.97.87は引越し先のサーバ(エックスサーバー)のIPアドレスです。www.xsrvfreessl.tkとsub1.xsrvfreessl.tkもAレコードとして設定します。「Aレコードであること」が自動更新の条件だからです(このあたりはエックスサーバーのサポートに問い合わせて確認しました)。
これで、エックスサーバーのDNSを使わずにエックスサーバーで無料独自SSLを使うための設定が完了です。ポイントをまとめると次の二点です。
- SSLの認証は外部サーバーでのWeb認証で行う。
- DNSでは引越し先(エックスサーバー)をAレコードで登録する。
これにたどり着くまでにかなり手こずりました。手順がわかってしまえば簡単なのですが。