SSL
concrete5
さくらのレンタルサーバ

さくらのレンタルサーバー+concrete5で常時SSL接続&URL正規化を行う方法

More than 1 year has passed since last update.

前提と目標

さくら コントロールパネル ドメイン設定

ドメイン登録

  • 「example.com」と「www.example.com」を別々のドメインとして設定します。
    両方とも「wwwを付与せずマルチドメインとして使用する(上級者向け)」の設定にします。

  • フォルダもそれぞれ別の物を指定します。

SSL証明書の登録とSSL設定

  1. まずはexample.comにSSL証明書を登録します。 参照:【ラピッドSSL】サーバコントロールパネルからの申込み・導入手順
  2. example.comの「SSL証明書>更新」から「秘密鍵のバックアップ」をクリックして秘密鍵をダウンロードします。
  3. 会員メニュー>契約情報 から「サーバー証明書」をダウンロードします
  4. もう片方のドメイン(例:www.example.com)に上記「秘密鍵のバックアップ」「サーバー証明書」を使ってSSL証明書を登録します。
    www.example.comにSSL証明書を登録する際、「秘密鍵のアップロード」が画面に出てこない場合(既に登録されたCSRキーが表示される場合)は、「秘密鍵を含む全設定の削除」をクリックして一度設定をクリアしてください

  5. 両方のドメイン設定を「SNI SSLを利用する」に変更します。

concrete5の設定

concrete5のインストール

example.comで指定したフォルダにconcrete5をインストールします。
concrete5:ホスティング会社別インストールガイド

リダイレクト設定

SSL Redirect Configurationをインストールします。
  URLルール(パス)に「*」を設定します。

プリティーURL

「管理画面>システムと設定>URLとリダイレクト」でプリティーURLを設定します。
「URLからindex.phpを除く」にチェックを入れて「保存」をクリックすると自動的に.htaccessファイルがサーバー上に生成されます。

ヘッダー情報変更

application/bootstrap/app.phpへ下記を追記します。

app.php
 $request = Request::getInstance();
  if ($request->headers->has('X-Sakura-Forwarded-For')) {
      $request->server->set('HTTPS', 'on');
  } 

カノニカルURL設定変更

下記内容で application/config/concrete.phpというファイルを作成します。
※通常canonical_url は http://~ ですが、今回は https://~ に設定します。

concrete.php
<?php
return array(
    'seo' => array(
        'canonical_url' => 'https://example.com/',
        'canonical_ssl_url' => 'https://example.com/',
    ),
); 

参照:サクラインターネットで concrete5 を常時 SSL にするための方法

301リダイレクト設置

www.example.com のフォルダに下記内容で.htaccessファイルを作成し、301リダイレクトを設定します。

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.example\.com$
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
</IfModule>

以上となります。
お疲れさまでした!
https://www.example.com を有効とする事も可能です。
その場合は example.comとwww.example.comを読み替えて設定してください。

2016.11.22追記
秘密鍵のアップロードが出来ない場合について補足しました。