特定ページのSSL対応

2010年6月27日 at 18:56

僕がやった方法を書いておきます。

concrete5の不満なところの一つに、
「SSLページとそれ以外のページの区別が無い」
というのがあります。(もう一つは「フォーム入力者に確認メールを送らない」です)

個人情報入れる入力フォームだろうがなんだろうが基本httpです。(海外ではあまり気にされない様です)

ずいぶん前に僕のサイトにSSLを入れたので、お問い合わせフォームはhttps、それ以外のページはhttpでアクセスする様に、オートナビをカスタマイズしました。
http://www.xross-cube.com/
(お問い合わせページがSSLになってます)

まず、ページ属性にハンドルを「enable_ssl」で「要SSL」のチェックボックス項目を追加します。
で、オートナビブロックのview.phpの55行目付近に以下のコードを追記します。


if($_c->getCollectionAttributeValue('enable_ssl') && !$c->getCollectionAttributeValue('enable_ssl')){
$pageLink = ereg_replace("http://","https://",BASE_URL.$pageLink);
}else if(!$_c->getCollectionAttributeValue('enable_ssl') && $c->getCollectionAttributeValue('enable_ssl')){
$pageLink = BASE_URL.$pageLink;
}

これで、「要SSL」にチェックが入ってるサイトにはhttpページからアクセスする場合は「https://~」でアクセスでき、httpsページから他のページにアクセスする際は「http://~」でアクセスする様にリンクが生成されます。

タグ:

Re: 特定ページのSSL対応

2011年8月9日 at 16:34
yamanoiです。

テーマを作成するときにgetStyleSheet()を使ってはいけません。下のように書き換える必要があります。
<link rel="stylesheet" media="screen" type="text/css" href="<?php echo $this->getThemePath
().'/main.css'?>" />

変更しないとCSS内にurl(image.gif)がurl(http://domein/image.gif)のように正規化されてしまいます。
よって、ページが認証されなくなります。

追伸:
concrete5のバージョン5.4.1.1.jaから、https廻りが変更されているので
上の変更しなくても大丈夫かもしれません。
 

Re: 特定ページのSSL対応

2011年9月10日 at 15:11
フォームをSSL対応したいので試してみたのですが、
「enable_ssl」で「要SSL」というのが見つかりません。

これは、5.4.1.1.1.jaではどうなりますでしょうか?

「ページ設定」「カスタム属性」「Force SSL」のことでしょうか?
 

Re: Re: 特定ページのSSL対応

2011年9月15日 at 22:59
taoさんはハンドルが「enable_ssl」で名前が「要SSL」の属性を自分で追加しているということですね。インストール時に作られる属性ではありません。
 

Re: Re: Re: 特定ページのSSL対応

2011年9月16日 at 0:00
すみません。
よくわからないので、10月の勉強会で時間があれば教えてくださいませんか。
 

Re: Re: Re: Re: 特定ページのSSL対応

2011年9月16日 at 1:46
ページ属性の追加方法は分かりますか?
管理画面->ページとテーマ->属性情報 画面にアクセスし、「ページ属性情報を追加」で「チェックボックス」を選択して「実行」ボタンをクリック。
次の画面でハンドルに「enable_ssl」名前に「要SSL」と入れて属性を追加しているということです。プログラムの動作には、ハンドルが一致すればいいので、名前は分かりやすいものに変えてかまいません。
 

Re: Re: Re: Re: Re: 特定ページのSSL対応

2011年9月16日 at 18:38
すみません。
そういう文字名称の問題でなく、フォームのSSL化がうまくいかないのがわからないという意味です。
うまく行かないので、操作が違うのかなと思っての書き込みです。
 

Re: Re: Re: Re: Re: Re: 特定ページのSSL対応

2011年9月16日 at 18:49
taoさんの書き込みは、ページのSSL化ができている前提で、ナビゲーションのリンクで特定のページのリンクを https:// から始まる様にするものです。ページのSSL化自体がうまくいっていない場合、別スレッドで現象を書きこんでいただければと思います。あるいは、勉強会で…。
 

共用SSL

2012年2月26日 at 19:32
通常ページ(非SSL)は独自ドメイン、
SSLページは共用SSLのドメインで運用したいのですが、
可能でしょうか?

また可能でしたらどのような設定が必要ででしょうか?
 

Re: 共用SSL

2012年2月27日 at 6:37
お使いのサーバーの条件で異なります。

SSLの共有サーバーを使ったときのURLはどんなURLになりますか?

SSL対象のページを置くフォルダと、通常ページを置くフォルダは異なりますか?

差し支えなければ具体的に、どこのレンタルサーバーのどのサービスをお使いでしょうか。
 

Re: 共用SSL

2012年2月27日 at 9:50
早速のご返信、ありがとうございます。

URL以下の通りです。

 非SSL:http://www.xxxxx.jp
 SSL :https://yyyyy.sakura.ne.jp

SSL対象の設置領域は、通常ページと同じです。
(同じソースを使用し、アクセス方法が異なるだけです)

レンタルサーバは、さくらインターネットのスタンダードです。

よろしくお願いします。
 

Re: Re: 共用SSL

2012年2月27日 at 11:29
できると思います。

以下、実験してみてください。

SSLにしたいページが以下として
http://www.xxxx.jp/aaaaaa/bbbbb.php...

以下でアクセスしてみてください。
https://yyyy.sakura.ne.jp/aaaaaa/bbbbb.php...

それで開けば、要はそのページへのリンクとそのページから他のページへのリンクを書き換えればいいことになります。その方法は、このトピックの前半で紹介されています。

私もやりたいと思っていて、今週中に実験してみようと思います。
今週いっぱい待っていただければ具体的な方法を紹介できると思います。
 

Re: 特定ページのSSL対応

2012年3月4日 at 19:42
返信が遅くなり申し訳ございません。
やっと時間ができ、調査できたので報告いたします。
(concrete5は先日触り始めたばかりのど素人です。
 間違いや勘違い等ございましたら、厳しくご指摘願います)

concrete5は、BASE_URL以外のドメインでアクセスすると、
BASE_URLのドメインでリダイレクトする機能ついているようです。
なので、指示いただいたURLでSSLにアクセスすると、非SSLへリダイレクトされてしまいます。

そこで調べたとこと、
define('REDIRECT_TO_BASE_URL', false);
とすることでリダイレクトをオフにできることがわかりました。


ただ折角ついているリダイレクト機能をオフにするのはどうかと思ったので、
もう少し調べたところ、
BASE_URL_SSLで対応できるようになっていることがわかりました。

しかし、この機能はバグっているようです…。

参考:http://www.concrete5.org/community/forums/installation/redirect-problem-after-installation/


バグを修正(「Config::get('BASE_URL_SSL'」を「BASE_URL_SSL」に修正)
すれば動くようなのですが、更に問題が発覚しました。

さくらインターネットは「$_SERVER['HTTPS']」でSSLの判定ができないようです。

参考:http://www.usinezumi.com/blog/2009/07/08/3/


url_check.phpのバグの修正とさくらインターネットでなければ、
BASE_URL_SSLでスマートに対応できるようです。


私の場合はさくらを使用しなければならないので、
結局、REDIRECT_TO_BASE_URLの機能をオフにして対応することにしました…。


以上、よろしくお願い致します。
 

Re:共有SSL

2012年2月27日 at 15:01
実は私も最近理解したことなので、みなさんと土壌は同じです。

一応、ここで書いておきますが、共有 SSL の使用は、脆弱性の問題があるために、お勧めできません。

既に他人も使っている SSL 証明書なので、いとも簡単に、他人が乗っ取られる可能性があるからです。

http://www.imamura.biz/blog/cms/wordpress/2706

公式でも、あまりオススメできませんので、やり方を知っていたとしても、そろそろアドバイスをするのを辞めることを推奨しようと思います。

各位、よろしくお願い致します。
 

Re:共有SSL

2012年2月27日 at 18:25
yamanoiです。

昨年10月にロリポップの共有SSLを使おうとしたら
携帯電話のauがアウトでした。

共有、専有以外にも
携帯電話も対象にしようとする場合のSSL選びは慎重に
 

Re: 特定ページのSSL対応

2012年3月4日 at 19:45
yamanoi 様

はじめまして、質問の投稿者です。

これは共用SSLと言うよりも、
ほとんどの携帯(ガラケー)がベリサインの証明書しか対応していない、
と言う問題ですね。

以上、よろしくお願い致します。
 

Re: Re: 特定ページのSSL対応

2012年3月5日 at 10:38
Yamanoiです。

詳しくはわかりませんが、ドコモ、ソフトバンクは大丈夫でAUだけがだめでした。
ベリサインは老舗なんで大丈夫でしょうが高いですよね。
あと、行政(こちらは多くがGPKI)の携帯ページをSSLで作るときは要注意ですね。
 

Re: Re: Re: 特定ページのSSL対応

2012年3月5日 at 11:29
少し訂正です。
ベリサインしかというのは数年前の話でした…。
最近の機種ではサイバートラスト等、けっこう対応されているようです。

参考:
http://www.slogical.co.jp/ssl/
http://triaez.kaisei.org/~kaoru/ssl/cell.html

以上、よろしくお願い致します。
 

Re: Re:共有SSL

2012年2月27日 at 23:10
なるほど。

共有SSLでの説明は控えさせていただきます。

専用のSSLによる方法のみ紹介させていただきます。
 

Re: 特定ページのSSL対応

2012年3月4日 at 19:44
katz515 様

はじめまして、質問の投稿者です。

共用SSLの危険性についてですが、
サブドメインでユーザを切り替えている場合、
一概には言えないと思います。

参考:http://sakura.cb-faq.com/faq/public/app/servlet/qadoc?000735

(よくネット上で書き込まれている共用SSLの危険性は、
 同じドメインを使用し、サブディレクトリでユーザを切り替えている場合です)

以上、よろしくお願い致します。
 

Re: 共用SSL

2015年8月5日 at 20:47
一応、更新します。

5.7.4 から、SSLは別ドメインで運用することが可能になりました。