Q:SSL対応の設定をしたいのですが?
A:管理画面からの設定ではなく、設定ファイル ( configure.php )を修正します。
ZenCartPro においては、デフォルトでは以下の場所に「ショップ用設定ファイル」と「管理画面用設定ファイル」があります。
* 「ショップ用設定ファイル」 /includes/configure.php
* 「管理画面用設定ファイル」 /admin(デフォルトの場合)/includes/configure.php
注意:正しくインストールされたサイトでは、ファイルのパミッションが「書き込み不可」になっているはずですので、変更する場合には一旦パミッションを書き込み可に変更し、修正後に再度パミッションを元に戻していただく必要があるかもしれません。
■まずは、「ショップ用設定ファイル」の変更を行います。
/includes/configure.php
13行目辺りから始まる以下のような行を見つけて赤太文字で記述した部分を変更してください。
// Define the webserver and path parameters
// HTTP_SERVER is your Main webserver: eg-http://www.your_domain.com
// HTTPS_SERVER is your Secure webserver: eg-https://www.your_domain.com
define('HTTP_SERVER', 'http://www.mydomain.com'); <=非SSL時のURL
define('HTTPS_SERVER', 'https://www.mydomain.com'); <=SSL時のURL
↑ http ではなく https になっている点に注意// Use secure webserver for checkout procedure?
define('ENABLE_SSL', 'true'); <= false(SSLを利用しない)になっていますので
true(SSLを利用する)に変更します。(※小文字です)
■次に、「管理画面用設定ファイル」の変更を行います。
/admin(デフォルトの場合)/includes/configure.php
13行目辺りから始まる以下のような行を見つけて上記の場合と同じ要領で、赤太文字で記述した部分を変更してください。
* If you desire your *entire* admin to be SSL-protected, make sure you use a "https:" URL for all 4 of the following:
*/
define('HTTP_SERVER', 'http://www.mydomain.com');
define('HTTPS_SERVER', 'https://www.mydomain.com');
define('HTTP_CATALOG_SERVER', 'http://www.mydomain.com');
define('HTTPS_CATALOG_SERVER', 'https://www.mydomain.com');// Use secure webserver for catalog module and/or admin areas?
define('ENABLE_SSL_CATALOG', 'true');
define('ENABLE_SSL_ADMIN', 'true');
注意: URLの記述は、必ずSSL証明書の内容に合わせてください。( 取得した証明書には、ドメインに www.などのサブドメインががついているかどうかも重要です)
注意: SSL通信時に通常のアクセスの場合とサブドメインが変わる場合は、別途管理画面から設定の変更が必要です。
例) 非SSL通信時=> http://www.mydomain.com
SSL通信時 => https://ssl.mydomain.com
このようなケースでは、「一般設定」>「セッションの設定」画面より、「クッキーに保存するドメイン名の設定」 を false に変更しておいてください。
Q:常時SSL対応の設定をしたいのですが?
A:近年Googleが常時SSLを全面支持し、優遇する方針を打ち出してからサイト全体を常にSSLで表示するようにしたいという希望が増えていますが、上記のSSL設定の手順のなかで「非SSLページ」用(基本のURLとなる部分)のプロトコル指定部分を https:// にするだけでOKです。
SSLページ対象ページへの切替フラグである部分も、 define('ENABLE_SSL', 'false'); のように、false(無効)にしおいておいて大丈夫です。
ZenCartPro においては、デフォルトでは以下の場所に「ショップ用設定ファイル」と「管理画面用設定ファイル」があります。
* 「ショップ用設定ファイル」 /includes/configure.php
* 「管理画面用設定ファイル」 /admin(デフォルトの場合)/includes/configure.php
注意:正しくインストールされたサイトでは、ファイルのパミッションが「書き込み不可」になっているはずですので、変更する場合には一旦パミッションを書き込み可に変更し、修正後に再度パミッションを元に戻していただく必要があるかもしれません。
■まずは、「ショップ用設定ファイル」の変更を行います。
/includes/configure.php
13行目辺りから始まる以下のような行を見つけて赤太文字で記述した部分を変更してください。
// Define the webserver and path parameters
// HTTP_SERVER is your Main webserver: eg-http://www.your_domain.com
// HTTPS_SERVER is your Secure webserver: eg-https://www.your_domain.com
define('HTTP_SERVER', 'https://www.mydomain.com'); <=元来は非SSL時のURL
define('HTTPS_SERVER', 'http://www.mydomain.com');// Use secure webserver for checkout procedure?
define('ENABLE_SSL', 'false');
■次に、「管理画面用設定ファイル」の変更を行います。
/admin(デフォルトの場合)/includes/configure.php
13行目辺りから始まる以下のような行を見つけて上記の場合と同じ要領で、赤太文字で記述した部分を変更してください。
* If you desire your *entire* admin to be SSL-protected, make sure you use a "https:" URL for all 4 of the following:
*/
define('HTTP_SERVER', 'https://www.mydomain.com');
define('HTTPS_SERVER', 'http://www.mydomain.com');
define('HTTP_CATALOG_SERVER', 'https://www.mydomain.com');
define('HTTPS_CATALOG_SERVER', 'http://www.mydomain.com');// Use secure webserver for catalog module and/or admin areas?
define('ENABLE_SSL_CATALOG', 'false');
define('ENABLE_SSL_ADMIN', 'false');
注意: URLの記述は、必ずSSL証明書の内容に合わせてください。( 取得した証明書には、ドメインに www.などのサブドメインががついているかどうかも重要です)
注意: この設定はZencart が生成するサイト内リンクが https:// になるというものですので、ブラウザ上であえて http:// でURLを指定した場合はSSL無しでページが表示されます。
「どんなことがあっても絶対に https:// でしか表示させたくない」ということであれば、.htaccess などを利用してリダイレクトさせるよう制御する必要があります。(サーバーにより依存のある設定方法ですので、具体的な手法はご自身でご確認ください)
Q:共用SSL証明書を利用したいのですが?
A:弊社では共用SSLの利用を強く非推奨しております。
携帯サイト利用の場合は、サイト全体を共有SSL用の設定にしなければ利用できません。PCサイトについても同様にサーバー負荷は上がりますが、サイト全体をSSLにする事で利用自体は可能です。
あるいはPC用のサイトでの利用だけをお考えであれば、以下の修正を行う事で利用可能となりますが、非推奨(強く利用しないようお勧めします)の対応です。
クッキーなしでのセッションを有効にするためには、
/includes/init_includes/overrides/init_sessions.php
を削除する事で、Zencart1.3.8a 英語版と同じ仕様になります。
共有SSLを利用する場合はこれで利用できるようにはなると思います。
※共有SSLが利用できると確約しているわけでもありません。
その場合、既知の問題として以下の点が挙げられます。
英語版1.38aに存在するセッションハイジャック対策の問題で
・POSTでセッションIDが渡された場合はそれが優先される
・SSLページにおいてはGETでもセッションIDが渡された場合はそれが優先される
とはいえ、それらの場合でもセッションを開始した後に
・User Agentチェック
・IPアドレスチェック
等を行うのでこれらを有効にしておけば、有る程度はセッションハイジャックを防ぐ事はできるでしょう。
ただし、完全にセッションハイジャックを防止できる訳では有りません。
個人的な意見と思われる方もおられるかもしれませんが、共有SSL の利用のためにセキュリティが下がる形での変更するのは、本末転倒のように思われます。
Q:IPアドレスからドメインに接続URLを変更したい
A:ドメインの切り替えが済んでいないなど、初めにIPアドレスでインストールした場合、ドメインでの運用に切り替えるに際して、設定を変更する必要があります。
設定の必要なファイルは、上記のSSL対応の場合と同じく以下の2つのファイルです。
* 「ショップ用設定ファイル」 /includes/configure.php
* 「管理画面用設定ファイル」 /admin(デフォルトの場合)/includes/configure.php
で以下の部分を変更してください。
■「ショップ用設定ファイル」の変更
define('HTTP_SERVER', 'http://www.mydomain.com'); <=IPをドメインに変更
define('HTTPS_SERVER', 'https://www.mydomain.com'); <=SSLを利用する場合
■「管理画面用設定ファイル」の変更
define('HTTP_SERVER', 'http://www.mydomain.com');
define('HTTPS_SERVER', 'https://www.mydomain.com');
define('HTTP_CATALOG_SERVER', 'http://www.mydomain.com');
define('HTTPS_CATALOG_SERVER', 'https://www.mydomain.com');