つ積み上げログ技術ブログ記事一覧へ

自主執筆記事

GitHub Pagesの証明書が発行されないのは順序のせい|cnameは最後に設定する

DNSもCAAもDNSSECも正常なのに、GitHub Pagesの証明書が1週間発行されなかった。原因は設定の順序で、Pagesを作ってすぐカスタムドメインを入れていた。デプロイして github.io 側で200を確認してからドメインを設定したら25秒で approved になった。

インフラ公開: 2026/10/02更新: 2026/10/02
GitHub Pages証明書カスタムドメインDNSデプロイ

01 / 本文

DNSは全部合っているのに証明書が出ない

GitHub Pages に独自ドメインを割り当てた。Aレコードは 185.199.108.153 から 185.199.111.153 の4本、どれも正しい。

それなのに1週間、HTTPSが有効にならなかった。管理画面には証明書の発行待ちと出たまま動かない。

http:// では開けるが https:// が繋がらない。canonical は https を指しているので、検索エンジンから見ると繋がらないURLを正規URLとして申告している状態だった。

02 / 本文

疑ったものを順番に潰した

正常に動いている他のドメインと、1項目ずつ突き合わせた。

- Aレコード4本 … 一致 - CAAレコード … どちらも未設定(どのCAでも発行できる) - DNSSEC … どちらも無効 - CNAMEの有無 … 一致 - www の有無 … 正常なドメイン9件にも www は無い

www が無いせいだと2回言い切って、2回とも外した。 正常に動いているほうにも無かったので、最初から原因になりえなかった。

03 / 本文

違っていたのは設定の順序だった

最後に残ったのが、作業をどの順番でやったかだった。

うまくいかなかったドメインは、Pages を作ってすぐカスタムドメインを設定し、そのあとデプロイしていた。 正常なドメインは、デプロイが先だった。

GitHub はカスタムドメインを設定した時点で、そのドメイン宛てにHTTPで到達確認を行う。その時点で配信する実体が無いと、確認が通らない。 いったん失敗すると、あとからデプロイしても自動では再試行されなかった。

04 / 本文

効く順序

やり直したのは次の順番。

効かない  Pages作成 → すぐ cname 設定 → デプロイ
効く     Pages作成 → デプロイ → github.io で200を確認 → それから cname 設定

05 / 本文

実際にかかった時間

いったん Pages を削除し、90秒ほど待ってから作り直した。build_type は workflow。

デプロイして https://<ユーザー名>.github.io/<リポジトリ>/ が200を返すことを確認し、そのあとでドメインを設定した。

16:58:03  cert=無
16:58:28  cert=approved
https:    200

06 / 本文

25秒だった

1週間動かなかったものが、順序を変えただけで25秒で通った。DNSにもCAAにも、一度も問題は無かった。

approved を確認したあとで https_enforced を立てると、http:// が301で https:// に飛ぶようになる。ここも証明書が出ていない状態では設定できない。

07 / 本文

確認は相手と同じ見え方で取る

ブラウザで開けたかどうかは証拠にならない。HTTPステータスとヘッダを直接見る。

gh api repos/<owner>/<repo>/pages \
  --jq '"cname=\(.cname) cert=\(.https_certificate.state)"'

curl -s -o /dev/null -w 'HTTP %{http_code} -> %{redirect_url}\n' http://example.jp/

08 / 本文

まとめ

- DNSが正しくても、順序を外すと証明書は発行されない - カスタムドメインは デプロイ済みを github.io で確認してから 設定する - 失敗した状態は自動では戻らない。Pagesを作り直すのが速い - 原因は測ってから言う。www のせいだと2回言い切って2回とも外した

コメント

この記事へのコメント

お名前だけで投稿できます。アカウント登録やログインは不要です。 いただいたコメントは確認のうえ公開します。