Re: 常時SSL化について

2016年4月23日 at 8:23

Katz Ueno様
ありがとうございます。
試してみたところ、動作に変化はありませんでした…。

さくらのSNI SSLの挙動について整理してみました。
・PHP 5.6.18 (cgi-fcgi)
・concrete5 - 5.7.5.6
・キャッシュ全て無効
・プリティーURL有効

a)https://mydomain で閲覧
 基本的に大丈夫。ただし、ページ内のリンクが
 https://mydomain/contents/
 のように最後にスラッシュがついていると
 http://mydomain/contents ←SSL/TLSなし
 に飛ばされます。

b)https://www.mydomain で閲覧
 こちらもwww無しと同様に基本的に大丈夫。
 ただ、上記同様、最後にスラッシュがついていると
 https://www.mydomain/contents/
 から
 http://mydomain/contents ←SSL/TLSなし、wwwなし
 に飛ばされます。

c)https://mydomain でログイン
 ID/PW入力後、ログイン状態でhttp://mydomain(SSL/TLSなし)に飛ばされます。
 改めてURLにhttps://を入力してもログイン状態は保てたままですが、
 TOPページ「https://mydomain/」以外では、ツールバーの管理画面ボタンが「http://mydomain/(SSL/TLSなし)」をリンクしており、ツールバー右の管理用ドロップダウンメニューが表示されない状態です。
 また、TOPページにて管理用ドロップダウンメニューを表示させた際も、サイトマップ等メニュー項目のリンクが全てSSL/TLSなしを指しているので、項目を選ぶとSSL/TLSが外れます。

d)https://www.mydomain でログイン
 ログイン画面、フォームのpost先が「https://mydomain(wwwなし)」となっており、ID/PW入力後は上記c)同様、ログイン状態でhttp://mydomain(SSL/TLSなし wwwもなし)に飛ばされます。
 改めてURLにhttps://www.を追加した場合は当然ながら非ログイン状態となります。
 そのままwww.無しの状態での作業は上記c)と同様です。

こんな感じになりました。

※上記のスラッシュ問題、concrete5をルートにインストールした場合はペー
ジ内のリンクを修正することで解決できるのですが、
http://www.mydomain/concrete5/
のように下位フォルダにインストールした場合は、また厄介なことに…。

Virtualboxで「模擬さくらサーバー」を立て、フルサイト(=Elemental)
をインストールしてテストしてみました。
ホームへのリンクが
http://www.mydomain/concrete5b/index.php?cID=1
となっているとき(つまりデフォルト)、書き出される a hrefは
http://www.mydomain/concrete5 ←最後のスラッシュ無し
を指しています。
結果としてmod_dirが発動し、wwwなしのhttpページ(http://mydomain/concrete5/)へジャンプします。
(ルートにインストールした場合は、最後スラッシュ無しでも正常に動作します)

ポート問題に加え、プリティーURLの「最後のスラッシュは全部取っちゃうぞ」行動が原因の一つを担っているような気がしました。

申し訳ありませんが引き続きよろしくお願いいたします。

Re: 常時SSL化について

2016年6月9日 at 12:02
aniyaさま

プリティーURLの「最後のスラッシュは全部取っちゃうぞ」行動が原因の一つ

URL の最後にスラッシュが付いていれば問題ないということでしょうか?

さくらインターネットでの SSL 化は他人事ではなく、何とか解決できればいいですね。
 

Re: 常時SSL化について

2016年6月10日 at 16:05
nipper様

ホームへのリンクに関しては、スラッシュが付いていればmod_dirが発動せず、問題解決となると思います。

ただ、一番の問題は「https時のポートは443固定」という前提でコアの部分が処理されており、それが原因で諸々の不具合が出ている事だと思います。
 

Re: 常時SSL化について

2016年6月10日 at 16:52
aniyaさま

スラッシュを付けるのは、application > config > generated_overrides > concrete.php に


'seo' => array(
'trailing_slash' => true,
)

を記述すればいけませんか?