LoginSignup
2
1

More than 5 years have passed since last update.

2018/07/24(25?)のChrome68に備えて既存カスタムドメインのGitHub Pagesを常時SSL化 + digの使い方覚書

Last updated at Posted at 2018-07-19

そろそろやらねばと思ってたらもうこんな季節だった

スクリーンショット 2018-07-19 23.29.36.png

2018年7月にリリースされるChrome68からどんなページだろうがSSLじゃないと警告がでるようになるらしいというのはうろ覚えていたので、改めて具体的なデッドラインを参照したところ 2018/07/24 とのこと。ぼーっとしてたらもう日付が迫ってきていました...。日本時間を考慮するならforumの回答通り25日かなとは思ったものの、もはや尻に火がついた :fire: 状況でした。

状況と目標

  • 状況
    • かなり昔にカスタムドメイン設定のされたGitHub Pagesがすでに存在する
    • まだEnforce HTTPS(強制SSLリダイレクト)の設定がOFF
    • DNS設定はお名前.comでやっている
  • 目標
    • Enforce HTTPSの設定をONにする

ちなみに公式が一番詳しいです

今回はちょっと慣れないdigコマンド周りでもたもたしたのでQiitaに書いておこうと思いました。
本当は公式を読んでおけば全然大丈夫です。貼っておきます。
https://help.github.com/articles/using-a-custom-domain-with-github-pages/

あとそもそもカスタムドメインをどうやるかなどは、既存のQiita記事が詳しいです。
- GitHub Pagesで静的なサイトを公開し、独自ドメインを設定する - Qiita
- カスタムドメインの GitHub Pages で HTTPS を使う - Qiita

DNS設定を更新する

そもそもGitHub PagesのリポジトリのSettingsを見に行ったところ、設定したのが昔すぎたので、警告が表示されていました。すみません...。

The custom domain for your GitHub Pages site is pointed at an outdated IP address.

スクリーンショット 2018-07-18 15.39.28.png

お名前.comでDNS設定の更新

お名前.comにてDNS設定を確認すると、次のAレコードの設定を発見。これは古いIPアドレスのようです。

192.30.252.153
192.30.252.154

公式helpにはALIASANAME のレコード設定の方法も載っていますが、お名前.comではどちらも現時点で利用できなかったので、Aレコードを使った方法を採用しました。
一旦、古いIPアドレスは残しておいて、次の4つのIPアドレスを追加設定しました。

185.199.108.153
185.199.109.153
185.199.110.153
185.199.111.153

digコマンドで設定を確認

公式に正しく設定できたかdigで確認しましょう、という手順があったのですが、なぜか何も表示されず。
(example.comのところは実際は対象となるカスタムドメインを入力します)

$ dig +noall +answer example.com
(何もでない...)

ここで、 +noall +answer というオプションは 表示を全部消す ANSWER SECTIONだけ表示する  を意味するので、一旦全部出してみます。
参考: digコマンドで覚えておきたい使い方11個 | 俺的備忘録 〜なんかいろいろ〜

$ dig example.com

; <<>> DiG 9.10.6 <<>> example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: FORMERR, id: 28080
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; WARNING: EDNS query returned status FORMERR - retry with '+noedns'

;; QUESTION SECTION:
;example.com.           IN  A

;; Query time: 2 msec
;; SERVER: 192.168.100.1#53(192.168.100.1)
;; WHEN: Wed Jul 18 17:49:38 JST 2018
;; MSG SIZE  rcvd: 29

;; WARNING: EDNS query returned status FORMERR - retry with '+noedns'

FORMERRが出ていて、 +noedns をつけてリトライせよとのことのようです。
EDNSとはDNSの拡張プロトコルのことで、拡張プロトコル使ってみたけどエラーになったので無効化してリトライしなさい、という意味だと取りました。
参考: インターネット用語1分解説~EDNS0とは~ - JPNIC

$ dig example.com +noedns

; <<>> DiG 9.10.6 <<>> example.com +noedns
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49238
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 4

;; QUESTION SECTION:
;example.com.           IN  A

;; ANSWER SECTION:
example.com.        1054    IN  A   93.184.216.34

;; AUTHORITY SECTION:
example.com.        689 IN  NS  a.iana-servers.net.
example.com.        689 IN  NS  b.iana-servers.net.

;; ADDITIONAL SECTION:
a.iana-servers.net. 273 IN  A   199.43.135.53
a.iana-servers.net. 273 IN  AAAA    2001:500:8f::53
b.iana-servers.net. 146 IN  A   199.43.133.53
b.iana-servers.net. 146 IN  AAAA    2001:500:8d::53

;; Query time: 3 msec
;; SERVER: 192.168.100.1#53(192.168.100.1)
;; WHEN: Wed Jul 18 17:59:35 JST 2018
;; MSG SIZE  rcvd: 181

今度はちゃんと内容を得ることができました。ANSWERのみ抜粋もできます。

$ dig +noall +answer +noedns example.com

example.com.        1002    IN  A   93.184.216.34

というわけでこの設定で対象のドメインを見てみると、次のように旧/新どちらのIPもちゃんと確認できました。
(*表記はexample.comと置換)

$ dig example.com +noedns +noall +ans

; <<>> DiG 9.10.6 <<>> lo-upe.com +noedns +noall +ans
;; global options: +cmd
example.com.        240 IN  A   185.199.108.153
example.com.        240 IN  A   185.199.109.153
example.com.        240 IN  A   185.199.110.153
example.com.        240 IN  A   185.199.111.153
example.com.        240 IN  A   192.30.252.153
example.com.        240 IN  A   192.30.252.154

GitHubに出ている古いですよ!の警告文に対応

設定はできている様子であるものの、まだ outdated IP address の警告文は表示されたままになった状態です。

If you're updating the IP address of an existing A record, first remove and then re-add your custom domain to the repository you’re using to publish your Pages site to trigger the process of enabling HTTPS.

公式helpに従って、Custom domain の項目のinput欄を空にしてSave -> 再度ドメインを入力してSave で警告文は消えました。
警告文がなくなったことを確認し、古いIPアドレス 192.30.252.153192.30.252.154 には引退してもらいました :wave:

強制SSLリダイレクトできるようにする

警告とdigの件がなければ、実際のところ常時SSLのために必要なのはこのステップだけです。クリックひとつのために長い道のりだったな...。

スクリーンショット_2018-07-18_17_11_27.png

Enforce HTTPS のチェックボックスをONにします。
ONにしてからしばらく後(10分後くらい)に確認してみると、http://~ でアクセスして https://~ へリダイレクトする挙動を観測することができました。
これで無事Chrome68を安心して待つことができそうです。めでたしめでたし。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1