このブログ(無印吉澤)を HTTPS 対応させました。今後は HTTP の方にアクセスしても、HTTPS の方にリダイレクトされます。
今回はそのために必要だった作業と、結局どうしようもなかった部分のまとめです。
はてなブログの HTTPS 対応状況
はてなブログは2018年2月22日から HTTPS での配信に対応し、その後も改良が続いているようです。
手順については、以下のヘルプを読めば大体のことはわかりました。
必要だった作業
1. 「HTTPS配信の状況」の「変更する」ボタンを押す
まず、はてなブログの「設定」→「詳細設定」→「HTTPS配信」から、URL 設定のページ を表示。
「HTTPS配信の状況」の「変更する」ボタンを押すと一瞬で切り替わります。
はてな内のサービスを見てみましたが、はてなブックマークの URL は https にすぐに切り替わったように見えました。
http://b.hatena.ne.jp/entrylist?url=muziyoshiz.hatenablog.com
2. サイト内に埋め込まれている自サイトの URL を https://
に書き換える
http://
にアクセスされてもリダイレクトされるので、基本的には書き換え不要なんですが、Feedly の Follow ボタンだけは https://muziyoshiz.hatenablog.com/feed で作り直しました。
Follower 0件になって寂しいんですが、まあ、今後 HTTPS が常識になるなら早いうちに合わせたほうがマシかなと。
3. Mixed Content の確認
ここからは、ひたすら Mixed Content の確認です。Chrome の開発者ツールを開いた状態で、ブログ一覧から「次のページ」を押し続けるという地味な作業をやりました。
うちはまだ記事数少ないので良かったですが、毎日ブログ投稿してるような人は死にそうですね……。
embed:cite 記法で書かれたリンクの修正
普通の [title](url)
記法で書かれたリンクは http でも問題ないんですが、はてなブログ独自の記法は、サムネイルが埋め込まれる関係か Mixed Content のエラーが出たので修正しました。
- Before:
[http://muziyoshiz.hatenablog.com/entry/2016/04/25/015644:embed:cite]
- After:
[http://muziyoshiz.hatenablog.com/entry/2016/04/25/015644:embed:cite]
はてな以外のサービスの URL も、http で書いていたものは https に修正しました。
- Before:
[http://twitter.com/okapies/status/856528271306928128:embed:cite]
- After:
[https://twitter.com/okapies/status/856528271306928128:embed:cite]
うちのサイトは、embed:cite 記法の URL をたまたま全部 https に直せましたが、リンク先が HTTPS 対応してない場合は [title](url)
記法に直したほうがいいかもしれません。
はてなフォトライフ(Fotolife)の画像の再読み込み
はてなブログに画像を貼るときは、Fotolife にアップロードして、以下の記法で埋め込むのが楽です。このブログでは主にアイキャッチ画像を貼るのに使っています。
<div align="center">[f:id:muziyoshiz:20160425013924j:plain]</div>
最近のブログに埋め込んだ画像は、何もしなくても最初から https になっていたんですが、2016年6月より前に埋め込んだアイキャッチ画像の URL は http になってしまっていました(Fotolife 自体がこのくらいの時期に HTTPS 化した?)。
対策としては、「ブログを開く」→「何かしら編集する」→「ブログを保存する」と、URL が再生成されて https に変わりました。これを、Fotolife の画像を埋め込んだ記事すべてでやらないといけないので、これはめんどくさい……。
どうしようもなかった部分
Amazon の商品画像埋め込み
はてなブログは、以下のような記法で Amazon の商品画像を埋め込めます。
[asin:B01FRIOYEC:detail]
この商品画像が、どうも HTTPS 配信のものと HTTP 配信のものが混在しているらしく、特に古い本は HTTP 配信のようでした。
例えば、以下の記事の最後にある「参考文献」で、「プログラミング Elixir」の画像は HTTPS、「Programming Phoenix」の画像は HTTP です。
ブログ記事を編集→保存しても直らなかったので、はてなではなくて Amazon 側の問題なんだろうと思って諦めました。
SlideShare のスライド埋め込みでエラー
HTTPS 化とは関係ないんですが、過去の記事を見返してみたら、SlideShare のスライドを埋め込んでいる箇所で大量のエラーが出てました。
f50c7d109361420bbc0ee31b2c44d54e:5 Uncaught SyntaxError: Unexpected token o in JSON at position 1 at JSON.parse (<anonymous>) at n.receive (player-67e207486452a6edc528fc9bbb3a0e02.js:26) at player-67e207486452a6edc528fc9bbb3a0e02.js:26 at nrWrapper (f50c7d109361420bbc0ee31b2c44d54e:5)
とか、
combined_base.js?f14b451c58:55 [Deprecation] chrome.loadTimes() is deprecated, instead use standardized API: Paint Timing. https://www.chromestatus.com/features/5637885046816768.
とか。
SlideShare が生成する iframe タグが古いからかな?と思って、SlideShare のサイトで iframe タグを生成し直してみました。でも、リンクの URL が http から https に変わっただけで、上記のエラーは消えませんでした。
あと、
Access to Font at 'https://public.slidesharecdn.com/fonts/fontawesome-webfont.woff2?v=4.3.0?cb=1526503678' from origin 'https://www.slideshare.net' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://www.slideshare.net' is therefore not allowed access.
という CORS のエラーが出ていたので、こちらも少し調べました。2017年1月に SlideShare に報告してくれた人がいる問題のようですが、いまも解決してませんでした。
このあたりのエラーが放置されてると、今後は SlideShare はなるべく使わないようにしようかなあと思っちゃいますね。
まとめ
結果的に大した手間もなく移行できて、移行から1週間くらい様子を見た感じでは、問題なく動いていそうです。
ただ、はてなフォトライフの URL を作り直すのだけは本当に面倒だったので、ブログ記事が多い場合は、なにか自動化手段を先に用意したほうがいいと思います。がんばってください。