ブログをSSL化しました

※この記事は、昔さくらのレンタルサーバーを使っていた頃に書いた、たいへん古い内容となっています。参考にしないでください。

この度、当ブログ「IPPEIntel.com」をSSL化しました。イマドキでいい感じです。かっこいいです。そのためだけにやってみました。

みなさんのブラウザに鍵マークは表示されているでしょうか? もし、ビックリマークとか、セキュリティ警告が表示されているようでしたら、コメント欄で結構ですのでご一報くださると嬉しいです。

20160515_screenshot

個人のブログをSSL化する必要性なんて特にあったわけではないのですが、年額1,620円から導入できるということを知って、勉強がてら導入してみました。GoogleもHTTPSであることはランキング的に優位になりうることを言っているわけですし、導入して損はないだろうと思ったわけです。

このブログは、さくらインターネットの共有レンタルサーバーを使っています。そこからGeoTrustのラピッドSSLの申し込みができます。手続きはごく簡単でした。支払いが承認された後、ドメインのルートディレクトリに指定のファイルを置くことによって、数時間ないし1日ほどで認証され、証明書が発行されます。てっきり、身分証明書とかをスキャンして送るものかと思っていました。

というわけで、思ったよりもずっと簡単に、SSLのドメインが有効になりました。その後、WordPressの設定画面で、サイトURLをhttpからhttpsに変更すれば完了…というわけではないんです。

以下は、ブログのSSL化にあたり悪戦苦闘したメモ書きみたいなものです。

記事やウィジェット内の内部リンクを置き換え

記事内にある画像や他記事へのリンクがhttpで表記されているので、それをhttpsに書き換える必要がある。ただし、今後httpに戻す可能性も考慮してプロトコルを省略した記述にした。Search Regexプラグインを用いて、一括でReplaceすれば簡単である。僕の場合は、"http://ippeintel.com"を"//ippeintel.com"に置換した。

ただし、ウィジェットなどに存在する内部リンクはこのプラグインでは置換できないので、手作業でやらなければならない。まあ、データベース開いて置換すればできそうだけど、数ヶ所だったので…。

wp-config.phpにコードを追加

さくらのレンタルサーバー上のWordPressという環境においては、個別ページ内でCSSやJSへの参照がhttpになってしまうという現象が起こるらしい。理由はよくわからないけど、ラピッドSSLの場合に限ったことらしい。httpsのページからhttpを参照して読み込もうとすると、ブラウザがセキュリティに問題があるといって弾いてしまうので、結果としてCSSが読み込まれなくて文字だけのページになってしまう。

検索してみたところ、WordPressルートのwp-config.phpに以下のコードを追加すれば解決らしい。素晴らしい。

if( isset($_SERVER['HTTP_X_SAKURA_FORWARDED_FOR']) ) {
    $_SERVER['HTTPS'] = 'on';
    $_ENV['HTTPS'] = 'on';
    $_SERVER['HTTP_HOST'] = 'ippeintel.com';
    $_SERVER['SERVER_NAME'] = 'ippeintel.com';
    $_ENV['HTTP_HOST'] = 'ippeintel.com';
    $_ENV['SERVER_NAME'] = 'ippeintel.com';
};

ところで、HTTP_X_SAKURA_FORWARDED_FORって部分はこの先もずっと有効なのだろうか。よくわからないし、まあいいや。

プラグイン WordPress HTTPSを追加

wp-config.phpにコードを追加したが、それでもなお、一部の参照先がhttpのままになってしまうのであった。いろいろ検索してみると、テーマファイル内のwp_head()のところでob_startを使ってバッファしておいて、str_replaceで強制的に置換する、という技が主流のようだった。だが、それなりに表示が遅くなるし、僕の場合は記事内の外部リンクまでも勝手にhttpsに置換されてしまった。

これは困ったということで、さらに検索してみると、WordPress HTTPS(SSL)というプラグインが見つかった。これをインストールするだけで、症状は改善された。

.htaccessに301リダイレクトを設定

この設定は必須ではないと思う。HTTPでもHTTPSでもアクセス可能にしておくというのも、選択肢としてはありだろう。僕は、中途半端ってやつが嫌いなので、有無を言わさずHTTPSということにした。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$
RewriteRule ^(.*)$ https://ippeintel.com/$1 [R=301,L]
</IfModule>

さて、なかなか細かい部分が上手くいかずに、二晩ほどかかってしまったが、このブログもついにSSLデビューすることができた。これからは、コメントを書き込むときや、コンタクトフォームからメッセージを送信するとき、遠慮なく正確なメールアドレスを記述していただけたら幸いだ。

買い物しようよ!

コメントを書き込む

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

コメント

おや、コメントがまだありません。