去年の5月、Google Blogger(blogspot.com)は、完全にhttps化されました。
一方、独自ドメインのBloggerについては放置状態…。
年末年始休暇で暇だったので、独自ドメインのBloggerをhttps化できないかと頑張ってみました。
GitHubもBloggerと同じような状況で、多くの人が独自ドメインのhttps化をCDN(CloudFlareなど)で解決しています。
このブログでは画像の配信にAmazon Web Services (AWS)を使っている(AWS S3からのコンテンツ配信にCloudFrontを追加:南の島旅)ので、AWSのCDN(CloudFront)とSSL証明書(ACM)を利用することに。
方法は、閲覧者とCloudFrontの間をhttps接続、CloudFrontとGoogleのサーバー (ghs.google.com)をhttp接続にしました。
結果を先に書くと、httpsによる接続自体は問題なく出来ましたが、rel=’canonical’とサイトマップのurlをhttpsにするのが難しいことから断念。
サイトマップに関しては自分で何とかなりそうでしたが、rel=’canonical’はBloggerが対応しないと難しいですね。

Diagram for Set up https on Blogger with a custom domain.

せっかくなので、手順だけ以下に載せておきます。
※ドメインはお名前.comで購入(メール転送Plus)して、DNSはAWSのRoute53を利用している前提です。

1.
AWSマネジメントコンソールのCertificate Manager(ACM)で、「.独自ドメイン」のSSL証明書の発行。
※証明書の認証に独自ドメイン宛のメール受信が必要になります。
ドメインをお名前.comで購入している場合には、無料のメール転送Plusが利用できます。
AWS SESでメール受信する方法もありますが、メール転送Plusの方が圧倒的に楽ですね。
ワイルドカード
ではなく、wwwなどを指定してしまうと、メール転送Plusは使えません。(認証メールが@独自ドメインではなく、@www.独自ドメインに送信されます。)

2.
AWS CloudFrontで、独自ドメインのBloggerをhttps接続する設定をします。
まず、「Create Distribution」で新しいDistributionを作製。
delivery methodでwebを選択した後、初期設定から変更するのは、以下の7つです。
※CloudFrontとghs.google.com間の接続(Origin Protocol Policy)は、初期設定でHTTP Onlyになっています。
  • Original Domain Name → ghs.google.com
  • Viewer Protocol Policy → Redirect HTTP to HTTPS
  • Forward Headers → Whitelist(CloudFront-Is-Desktop-Viewer、CloudFront-Is-Mobile-Viewer、CloudFront-Is-Tablet-Viewer、Host、Origin、Referer)
  • Forward Cookies → All
  • Query String Forwarding and Caching → Forward all, cache based on all
  • Alternate Domain Names(CNAMEs) → xxx.独自ドメイン
  • Custom SSL Certificate (example.com) → 手順1で作成したSSL証明書を指定

  • 3.
    CloudFrontDistributionのStatusが、「in Progress」から「Deployed」になるまで待機。
    意外と時間がかかるので、気長に待ってください。

    4.
    Route53で、xxx.独自ドメインに、Aレコードを設定。
    Alias Targetのプルダウンで、手順2で作製したDistributionのAliasを指定します。
    ※DistributionのStatusが「Deployed」になるまで、プルダウンに作製したCloudFrontのAliasは表示されません。

    以上で、Bloggerのhttps接続は、簡単に設定できました。
    問題は最初にも書きましたが、rel=’canonical’とサイトマップのurlがhttpである点。
    サイトマップについては、自分でhttpsのサイトマップを作製してS3にアップロード、CloudFrontのURLの振り分け機能を使えばxxx.独自ドメイン上にサイトマップを置くことが可能だと思います。
    しかし、urlを正規化するrel=’canonical’がhttpに向いているのは、Bloggerで対応してくれない限り修正は難しそうです。