Open3

github pages でカスタムドメインを設定するメモ

ふじしろふじしろ

ぽちぽちしながらつまづいたところをメモしていく

前提

  • ドメイン取得済み
  • 上記ドメインでAWS Route53にホストゾーン作成済み

メモ

名前解決に失敗

  1. github pagesを公開したいリポジトリのsettingsで取得したドメインを設定してSave
  2. 検証中だからまってね(🟡DNS Check in Progress)、の表示の後、ドメインチェックに失敗したよ(⚠️DNS check unsuccessful)の表示
  3. 詳細メッセージは以下。名前解決に失敗した模様。
Both <ドメイン名> and its alternate name are improperly configured
Domain does not resolve to the GitHub Pages server. For more information, see documentation (NotServedByPagesError).

対応
これをやってみる
https://docs.github.com/ja/pages/configuring-a-custom-domain-for-your-github-pages-site/verifying-your-custom-domain-for-github-pages

  1. 自分のsettings | pages から add a domainを選択
  2. 検証方法が表示されるので確認
    3. サブドメイン
    4. 値
  3. AWSのRoute53で指定のサブドメインに指定の値でTXTレコードを作成する
  4. github で verify を押下
  5. 検証成功したよ!の表示
  6. 再度DNSをチェックしてもらうも、⚠️DNS check unsuccessfulが再表示。
  7. しかしメッセージが画面上部に追加された
  8. HTTPSに対応してないよ(Domain <ドメイン名> is not eligible for HTTPS at this time.)とのこと。
  9. つまりHTTPSへの対応が必須

HTTPSに対応していないと言われる

  1. github pagesを公開したいリポジトリのsettingsで取得したドメインを設定してSave
  2. 検証中だからまってね(🟡DNS Check in Progress)、の表示の後、ドメインチェックに失敗したよ(⚠️DNS check unsuccessful)の表示
  3. HTTPSに対応してないよ(Domain <ドメイン名> is not eligible for HTTPS at this time.)の表示が画面上部に出る
  4. ただそもそもHTTPSを強制しなければHTTPでも公開できた認識だったので確認

名前解決ができていない(二度目)

  1. 一旦カスタムドメインをremoveし、github pagesも再デプロイ。
  2. すると再び名前解決ができていないとの表示が出た。
  3. Aレコードの設定ができてなかった

こちらのドキュメントを元に後述のAレコードをAWS Route53に設定
https://docs.github.com/ja/pages/configuring-a-custom-domain-for-your-github-pages-site/managing-a-custom-domain-for-your-github-pages-site

185.199.108.153
185.199.109.153
185.199.110.153
185.199.111.153
  1. HTTP でのアクセスに成功
ふじしろふじしろ

http接続までできたので、次はhttps接続に対応してみる

  1. SSL証明書の発行
    2. ACMで発行
    3. 以下の証明書を発行
    4. <ドメイン名>:apexドメイン(ルートドメイン)
    5. *.<ドメイン名>:サブドメインをワイルドカード指定
  2. 検証・適用
    1. Route53に検証用のCNAMEレコード作成(AWS Route53をDNSとして利用している場合)
      1. このCNAMEレコードはACMが生成した検証用のエンドポイント(_xxxxxxxxxx.acm-validations.aws)を指しており、これがDNSチャレンジど同じような所有権の証明として利用してるものと認識
  3. 確認
    2. curlなりブラウザなりでhttps://<ドメイン名> でサイトにアクセスできることを確認できればOK
    3. github 側では、http://<ドメイン名>で公開済みのサイトを一旦非公開(unpublish)にして、再度公開する必要があった。

メモ

github pages で警告が消えない

サイトにhttps接続できるようになった後、🟡DNS valid for primaryという表示が出ていた。
詳細を見てみるとCheck Againボタンと共に以下のメッセージが表示されていた。

www.<ドメイン名> is improperly configured
Domain's DNS record could not be retrieved. For more information, see documentation (InvalidDNSError).

www.<ドメイン名> は不適切に構成されています
ドメインのDNSレコードを取得できませんでした。詳細については、ドキュメント(Invaliddnserror)を参照してください。

wwwサブドメインを DNSにレコード設定していことでこの警告が出ている模様。

調べてみると、公式ドキュメントの GitHub Pages サイトのカスタムドメインを管理する | apex ドメインと www サブドメイン バリアントの構成 に以下の記載があり、これが警告の元と推測。

HTTPS としてセキュリティで保護された Web サイトでは www サブドメインを apex ドメインとともに設定することをお勧めします。

wwwサブドメインもいっしょに設定しておきましょうね、ということなので、推奨に従って対応してみる。

  1. AWS Route53 にCNAMEレコードを作成
    2. 設定内容
    3.サブドメイン: www
    4. レコードタイプ: CNAME
    5. 値: <ドメイン名>
    6. TTL: 任意
    7. ルーティングポリシー: シンプルルーティング
  2. Github PagesでCheck Againボタンを押下
  3. 表示が🟡DNS valid for primaryから✅DNS check successfulに変わった。

github pagesの設定画面がようやく安定したのでこれで完了とする

ふじしろふじしろ

github pages の公開ドメインをApexドメインではなくサブドメインに設定し直す

  1. Route53で以下の設定のCNAMEレコードを作成する
    2. 設定内容
    3. サブドメイン: 任意のサブドメイン
    4. レコードタイプ: CNAME
    5. 値: <Githubユーザー名>.github.io
    6. TTL: 任意
    7. ルーティングポリシー: シンプルルーティング
  2. Github Pagesの1のサブドメインをCustom domainとして設定する。
  3. 表示がDNS check successful になればOK
  4. 以下のAレコードは削除する
185.199.108.153
185.199.109.153
185.199.110.153
185.199.111.153