Katz です。最近、サーバーばっかり触っています。
2018年5月1日更新:さくらインターネットで対応してもらったようです。この記事に書かれている対策は不要かもしれません
さくらインターネットのスタンダードからビジネスプロの利用者で、独自ドメインで concrete5 サイトを常時接続する方法を紹介します。
この記事は aniya さんの Qiita の記事
さくらのレンタルサーバー+concrete5で常時SSL接続&URL正規化を行う方法
をもうちょっと、自分メモ用に、SSL Redirect Conf をせず、.htaccess を使って設定する方法に変えたものです。
concrete5 サイトは既に作成済みという前提で話をします。
この方法は concrete5.7.x でテスト済みです。恐らく concrete5 version 8 でも有効です。
ドメインの取得とSSLの設定
ドメインを取得します。サクラのドメインでも良いし、他のサービスで取得してもOK。サクラのドメインであれば、一箇所で設定できるので楽。ただ、同じドメイン内でもメールは違うサービスを利用したいなどがあれば、Amazon Route53 や CloudFlare などで管理しても良いかもです。
お名前.com やムームードメインでも DNS のカスタム設定が可能。
既存ドメインからの引越しの場合はちょっと待った!
ドメインを他のサーバーから移行する場合であれば、NS や DNS の切替はちょっと待った!すべての設定が完了してから、DNS や NS の設定を変更します。
レンタルサーバーコントロールパネルから、マルチドメイン設定でドメインを追加
独自ドメインを追加していない場合は、さくらインターネットのコントロールパネルに入り、左メニューから、 ドメイン設定 に入り、
- 1. 独自ドメインを新規取得する
- 2. さくらインターネットで取得したドメインを使う
- 4. 他社で取得したドメインを移管して使う
- 5. 他社で取得したドメインを移管せずに使う
- 6. バーチャルドメインサービスで利用しているドメインを移して使う
のどれかのメニューから選び追加設定します。
自前の DNS サーバーを利用する場合
これは、サブドメイン別にサーバーを切り替えたいなど専門家向けのやり方です。タイトルの意味がわからない人は読み飛ばしてください。
ドメインのネームサーバーをさくらインターネットに移管したくない場合、DNS の A レコードのみを、さくらインターネットのサーバーにポイントします。
DNS の A レコードは、さくらのサーバーコントロールパネルの「サーバー情報とパスワード」-「サーバ情報の表示」-「サーバに関する情報」をクリックします。
そうすると、そこで、IPアドレスという項目があります。その IP アドレスを DNS の A レコードとして、追加してください。
さくらインターネットのカスタマーサポートに、20175/25 14時頃に電話で問い合わせましたが、レンタルサーバーの IP アドレスが変わることはめったに無く、あったとしても、事前に連絡が来るとのことです。
SSL 証明書の取得
ラピッドSSL等
さくらのレンタルサーバーコントロールパネルから直接購入が出来て、更新なども出来るサービスがあります。コレを使うと証明書の更新が簡単。詳細は下記のオンラインマニュアルより。
【ラピッドSSL】サーバコントロールパネルからの申込み・導入手順
他のSSL証明書発行サービスを使って証明書を取得する
さくらのレンタルサーバーでは、さくらののSSL以外で取得した SSL 証明書で取得した証明書も、受け入れてくれます。その場合は、下記の手順で、他のサービスを使って SSL 証明書を取得できます。詳細は下記のオンラインマニュアルより。
既に取得済みの SSL 証明書を取得する
また、既存のSSL証明書の有効期限がまだあるという人は、既存の
- 秘密鍵 (key)
- 証明書 (crt)
- 中間証明書 (CA)
が必要です。
上記いずれかが取得できない場合は、新しくSSL証明書を購入しないといけません。
また、さくらインターネットでは、 www ありと www なしドメインを一つのドメインとして設定できるのですが、その場合、SSL証明書も両方のドメインの分を取得したものでないといけません。
SSL 証明書が「www」版のみなどであれば、マルチドメイン設定で、www ありと、www なしのドメイン両方を個別ドメインとして設定すればOK。
詳細は下記のオンラインマニュアルより。
concrete5 を設置する
concrete5 のファイルをサーバー上にのディレクトリにアップロードし、MySQL データベースの設定などを行います。
さくらインターネット特有の SSL 設定を行う
/application/bootstrap/app.php ファイルの設定
/application/bootstrap/app.php ファイルに下記のように加えます。
$request = Request::getInstance(); if ($request->headers->has('X-Sakura-Forwarded-For')) { $request->server->set('HTTPS', 'on'); }
Version 5.7.x 限定: /application/config/concrete.php ファイルの設定
concrete5.7.x の場合、本来 canonical_url
には、http プロトコルのみを実装するのですが、強引に https として入力します。
'seo' => array( 'redirect_to_canonical_url' => 0, 'canonical_url' => 'https://example.jp/', 'canonical_ssl_url' => 'https://example.jp/', ), );
Version 8 以降: /application/config/site.php
concrete5 V8 以降の場合は、管理画面からも行うことが出来ます。
[システムと設定] - [SEO と統計] - [URLとリダイレクト] ページに行き、 「カノニカル URL」 に、httpsなURLを入力し、 「URL リダイレクト - カノニカルURLでのみ表示します。」 にチェックをして保存してください。
'sites' => [ 'default' => [ 'name' => 'サイト名', 'seo' => [ 'canonical_url' => 'https://example.jp/', 'canonical_ssl_url' => '', ], ], ], ];
.htaccess で SSL 常時接続を行う
.htaccess は下記のように書き換えてサーバーに保存してください。
全ページを SSL 常時接続にする場合、concrete5 のアドオンを利用するより、.htaccess で設定するほうが、高速に、負荷も軽く転送できます。
一部ページを設定する場合のみ、SSL Redirect Conf アドオンの利用をおすすめします。
RewriteEngine On RewriteBase / RewriteCond %{HTTP:X-Forwarded-Proto} ^http$ RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME}/index.html !-f RewriteCond %{REQUEST_FILENAME}/index.php !-f RewriteRule . index.php [L]
ドメインのルートに concrete5 が設置されていなければ、RewriteBase を書き換える必要があります。
動作テストを行い DNS を切り替える (引っ越しの場合)
ドメインの引越しなどの場合は、 DNS 切替前に hosts ファイルを書き換えるなどして、アクセスのテストをしましょう。
以上
以上でさくらインターネットで concrete5 の SSL 常時接続が可能になる方法でした。