baserCMS LOLIPOP! サイトSSL化に際して設定するサイトURL周りの諸事情
baserCMSのサイト運用で、SSL化に際して設定が必要なサイトURL周りのいろいろについて考察しました。
サイトSSL化に伴って、baserCMSで設定の変更が必要な部分は、管理画面にログイン、設定>サイト基本設定ページの①ときどき②、ところによって④という感じ。
しかし、これらの各項に入れる情報がイマイチ分かりにくいのですが、まず確実に言えることから整理してみますと、
- ①に、
https://
から始まるSSL化後のサイトURLを入力する。 - ④で「SSL通信を利用する」を選択した場合は、②欄に
https://
から始まるSSL化後のサイトURLの入力が必須である。
以上の2点。
で、ここからがちょっと不思議。
だからといって、②にhttps://
から始まるSSL化後のサイトURLを入力したからと言って、④で必ずしも「SSL通信を利用する」を選択しなければいけないわけではなく「SSL通信を利用しない」のままでも問題ない。(意図的にその様な設定をする意味があるのか、そんなユースケースがあるのかは置いておいて、恣意的にその様な設定が可能である)
そもそも、今時「SSL化=常時SSL化」でほぼ間違いないし、フロントサイドのみSSL化してバックエンドはSSL化しないとか、その逆も含めてそんなユースケースはもう考える必要もない時代なわけで、となるといよいよ①②④は、マルっとSSL化したURLと当然SSL通信を利用するで良いのではないのか?!と思うんですが。。。 とはいえ、管理画面も含めていきなりSSL化してしまうと、利用しているレンタルサーバーによっては管理画面にログインできなくなってしまうという事故に見舞われることも想定されます。「管理側SSLを有効化するとリダイレクトループが起きる」 (さくらインターネットの場合)
そこら辺を加味して、サイトSSL化に伴って、baserCMSで設定の変更が必要な項目および安全な設定移行の手順は、
- まずは、① ② 欄に
https://
から始まるSSL化後のサイトURLを入力していったん「保存」 - その上で、フロントサイド、管理画面共に
https://
から始まるSSL化後のサイトURLで閲覧が可能かを確認 - フロントサイド、管理画面共に問題なく閲覧できたら、最後に ④ 欄「SSL通信を利用する」を選択して、再度「保存」
というのが結論かと。
ところが、これらのSSL化にまつわるサイトURL周りの設定情報は、LOLIPOP!の「baserCMS 簡単インストール」機能を使ってbaserCMSをインストールした場合、管理画面上のサイト基本設設定のUIから入力できないという現象に見舞われます。
事情および対処方法は、次のパラグラフで説明します。
ちなみに、この辺りの設定項目に間違った情報を入力して、管理画面にログインできなくなった場合は、お察しの通りapp/Config/install.phpファイルの該当する箇所を訂正します。
ロリポップ!で「baserCMS 簡単インストール」した場合の install.php のパーミッションに関して
ロリポップ!「baserCMS簡単インストール」でbaserCMSをインストールした場合、インストール後に生成されるapp/Config/install.phpファイルのパーミッションは 400 に設定されます。
以下、baserCMSのインストール時に生成される install.php のコード。
<?php
Configure::write('Security.salt', '****************');
Configure::write('Security.cipherSeed', '****************');
Configure::write('Cache.disable', false);
Configure::write('Cache.check', true);
Configure::write('BcEnv.siteUrl', 'http://****************/'); //①の項目
Configure::write('BcEnv.sslUrl', ''); //②の項目
Configure::write('BcEnv.mainDomain', '');
Configure::write('BcApp.adminSsl', false); //④の項目
Configure::write('BcApp.allowedPhpOtherThanAdmins', false);
Cache::config('default', array('engine' => 'File'));
Configure::write('debug', 0); //③の項目
パーミッションとは、ファイル(フォルダ)に対する保護モードで、ファイルにアクセスするアカウント種別ごとにアクセス権限を定義することができます。 パーミッションの設定によってアクセス制限を行うことで、悪意のある第三者から、重要なファイルの内容を書き換えられたり、実行されたりすることを防ぐことができます。 パーミッション 400 は、当該ファイルに対して、オーナー(この場合は、ログインユーザー)のみに「読み取り」権限のみが許可されている状態で、言い換えるとログインユーザーであっても「読み取り」以外の「書き込み」「実行」といった権限は許可されていないということになります。ログインユーザー以外(オーナーグループ、その他)は、読み取り、書き込み、実行といったいかなる権限も許されていない状態です。
つまり、ロリポップ!は、不正アクセスによってサイトが改竄されることを防止する目的で、このファイルをパーミッション 400 に設定しており、それは、ロリポップ!「baserCMS簡単インストール」のポリシーということになるのかと思います。
ですが、実際には、このパーミッション設定によって、本来であれば、ログインユーザーに許可されるているはずの管理画面の①から④の赤枠で示した項目が変更できなくなり、サイト所有者にとっては場合によって困ることになります。
というわけで、ロリポップ!「baserCMS簡単インストール」でbaserCMSをインストールした場合に限っては、これらの項目を変更するような要件が起きたときには、FTPでインストール先のサーバー内のinstall.phpファイルにアクセスし、「書き込み」権限を許可するため、パーミッションを変更する必要がでてきます。
具体的には、install.phpファイルを、ログインユーザーの「書き込み」権限を許可したパーミッション 600 に設定する必要があります。
以下、「ロリポップ!FTP」サービスを使用した場合です。ご参考まで。
諸々の変更作業が終わったあとは、できれば、install.phpファイルをパーミッション 400 の設定に戻しておきましょう。