PHD2の日本語マニュアルを公開しています。こちらからどうぞ。

個人サイト「Starry Urban Sky」もよろしく。

個人サイトの常時SSL化

昨日、Internet Watchにこんな記事が出ていました。

「Google、10月提供のChrome 62以降で、入力欄のあるすべてのHTTP接続ページで警告を表示」


Chromeでは1月に提供された「Chrome 56」から、パスワードやクレジットカード情報の入力フォームがあるウェブサイトでHTTPが使われていた場合、アドレスバーに「保護されていません」という表示が出るようになっています。

10月以降は、これが「パスワードやクレジットカード情報の入力フォーム」に限らず、検索欄などを含めたあらゆる入力欄をもつページに対象が広がるわけです。さすがに「保護されていません」などと表示されては、外聞が悪すぎます。

また、Googleの検索順位において、ウェブサイトのSSL/TLS対応(HTTPS化)の有無が影響するということを過去に公表しています。個人であっても、これはいよいよHTTPS化の波を無視できなくなってきたといえるでしょう。

「さくらのレンタルサーバ」のSSL対応状況

ところで昨年オープンした私の個人サイト「Starry Urban Sky」ですが、「さくらのレンタルサーバ」のライトプランを利用しています。価格が安いし、容量が10GBもあれば十分という判断だったのですが、泣き所はSSLに対応していないこと。

開設当初は大した問題ではなかろうと思っていたのですが、上記のような状況になってくると少し話が違います。一応、メールフォームなども設置していますし……。1つ上の「スタンダードプラン」であればSSL対応なのですが、プランが違うと使用サーバも異なるため、別途、新規申し込みと引越しが必要になってしまいます。この場合、URLも当然変更を余儀なくされることに。


どうしたものかと思っていたのですが、ちょうどタイミングよく、この4月20日から「ライトプラン」でもSSLが使用可能になっていました。そこで、ちょうどいい機会なので個人サイトの方を「常時SSL化」してみることにしました。

常時SSL化でハマる

常時SSL化」とは、サイトのページ全てをSSL/TLS対応(HTTPS化)にした状態を指します。これを実現するためには、サーバの方でSSLの利用を有効化したうえで、「http://〜」でアクセスしてきたものを「https://〜」にリダイレクトしてやればよいわけです。


さくらの場合、前者はサーバのコントロールパネルからSSLを有効化するだけなので簡単です。後者については、「.htaccess」にリダイレクトに関する記述を行うことで対応します。どう書けばいいかはググれば色々と情報が出てきますが、代表的なのは


RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

というもの。2行目でhttps以外でのアクセスを判断し、3行目でURLを「https://」で始まるものに書き換えています。通常はこれでいいはずなのですが……やってみると、なぜかリダイレクトがループしている旨のエラーメッセージがChromeで表示されてしまい、想定通りに動作していないようです。


技術的な細かいところは必ずしも理解しきれていないのですが、どうも「さくらのレンタルサーバ」は実装に癖があるようで、「.htaccess」による「常時SSL化」を実現するには以下のように書かねばならないようです。


RewriteEngine on
RewriteCond %{ENV:HTTPS} !^on$
RewriteCond %{HTTP:X-SAKURA-FORWARDED-FOR} ^$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

どうやら、https以外でのアクセスを判断する上で変数「HTTP:X-SAKURA-FORWARDED-FOR」がキモの様子。技術的な詳しい話は「さくら 常時SSL リダイレクト」あたりでググるとぞろぞろ出てくるので、興味のある人は調べてみてください。


こちらで動作検証した限り、メールフォームを含め、今のところとりあえず問題なく動いているようなので、さらにHTTP Strict Transport Security(HSTS)も設定して、いかなる場合も強制的にhttpsでアクセスするようにしました。

複数の端末で確認していますし、おそらく大丈夫だとは思いますが、もし不具合とかあるようでしたらお知らせください。

ところで「はてな」は?

この流れで気になるのは、このブログを置いている「はてな」の対応です。

Yahoo!ブログをはじめ、個人向けのブログサービスが軒並みSSL化を進めている中、「はてな」の動きはどうにも遅く、「はてなダイアリー」は言うに及ばず、「はてなブログ」の方ですら「現在検討中」という状態で具体的な対応予定は未定のようです。


はてなブックマーク」との連携等の問題で難航しているのだ、などという情報もあるようですが、ともあれ「総 常時SSL化」の流れの中にあってこの状況は深刻です。検索順位への影響もさることながら、10月のChrome更新以降はアドレスバーに「保護されていません」という表示が常時出るようになってしまうわけで、コメントを通しての交流にも支障が出かねません。


設計の古い「はてなダイアリー」はともかく、せめて「はてなブログ」が早々にSSL化に対応してくれないと困ります。あまりに難航するようなら、移転も考えなければならないかもしれません。

途中で趣旨が変わってるとはいえ、ダイアリーで2005年11月以来、11年以上書きためたものを移転するとか、恐ろしくて考えたくもないのですが。