さくらのレンタルサーバーと concrete5 で常時SSLを実装する方法

Katz Ueno
Katz Ueno

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 レコードは、さくらのサーバーコントロールパネルの「サーバー情報とパスワード」-「サーバ情報の表示」-「サーバに関する情報」をクリックします。

Sakura_Panel01.png

そうすると、そこで、IPアドレスという項目があります。その IP アドレスを DNS の A レコードとして、追加してください。

Sakura_Panel02.png

さくらインターネットのカスタマーサポートに、20175/25 14時頃に電話で問い合わせましたが、レンタルサーバーの IP アドレスが変わることはめったに無く、あったとしても、事前に連絡が来るとのことです。


SSL 証明書の取得


ラピッドSSL等

さくらのレンタルサーバーコントロールパネルから直接購入が出来て、更新なども出来るサービスがあります。コレを使うと証明書の更新が簡単。詳細は下記のオンラインマニュアルより。

【ラピッドSSL】サーバコントロールパネルからの申込み・導入手順


他のSSL証明書発行サービスを使って証明書を取得する

さくらのレンタルサーバーでは、さくらののSSL以外で取得した SSL 証明書で取得した証明書も、受け入れてくれます。その場合は、下記の手順で、他のサービスを使って SSL 証明書を取得できます。詳細は下記のオンラインマニュアルより。

【独自SSL】導入の流れ・設定手順


既に取得済みの SSL 証明書を取得する

また、既存のSSL証明書の有効期限がまだあるという人は、既存の

  • 秘密鍵 (key)
  • 証明書 (crt)
  • 中間証明書 (CA)

が必要です。

上記いずれかが取得できない場合は、新しくSSL証明書を購入しないといけません。

また、さくらインターネットでは、 www ありと www なしドメインを一つのドメインとして設定できるのですが、その場合、SSL証明書も両方のドメインの分を取得したものでないといけません。

SSL 証明書が「www」版のみなどであれば、マルチドメイン設定で、www ありと、www なしのドメイン両方を個別ドメインとして設定すればOK。

詳細は下記のオンラインマニュアルより。

【独自SSL】他社サーバよりSSL証明書を移行する手順


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 常時接続が可能になる方法でした。