Open1

https接続までの流れ(ドメイン/SSL証明書の取得/ACMEチャレンジ)

ふじしろふじしろ

自分の理解の言語化

前提

  1. ドメインを取得すればサイトは公開できる
  2. しかしドメインを取得しただけではhttp接続でのみ公開され、https接続ではアクセスできない
  3. じゃあhttpsにするにはどうすれば良い?
  4. 取得したドメインに対してSSL証明書が確認できるとhttps接続ができる。

SSL証明書ってどう取得するの?

AWSならACMで取れる。Let's Encriptとかで発行することも可能

具体的には?

取得したドメインに対してSSL証明書の発行を認証局(CA)に依頼する。
依頼には証明書発行サービスを活用することができ、それがACMやLet's Encrypt。

これらのサービスはRFC8555に基づいてACMEチャレンジを行うことでSSL証明書の発行を自動化している
https://tex2e.github.io/rfc-translater/html/rfc8555.html#8-4--DNS-Challenge

参考:
https://jprs.jp/pubcert/about/ACME/

webサイトをhttps可能な状態で公開するまでの流れ

前提:公開したいwebサイトやapiのホスティングサーバーは契約済み

  1. ドメインレジストラから希望するドメインを取得(購入)する
  2. DNSサービスで、1で取得したドメインとホスティングサーバーのIPアドレスを紐づける
    3. このステップを終えた段階でhttp接続による接続が可能になる
  3. SSL証明書の発行を認証局(CA)が提供する証明書発行サービスに依頼する
  4. ドメインの所有権をCAに証明する(ACMEチャレンジの実行する)
  5. SSL証明書が発行される
  6. SSL証明書をホストされたwebサーバーに設定する
    8. このステップを追えることでhttps接続が可能になる

ACMEチャレンジ認証について

ACMEチャレンジ認証には2種類ある。

  • HTTP Challenge
  • DNS Challenge
DNS Challenge の場合
  1. あるドメインに対して証明書を発行したいのでCAに依頼する
  2. 依頼者に対して、CAがドメインの所有権確認を行う
  3. 発行したい人に対して、このtxtレコードを設定しろ、と発行会社が指示する
  4. 跛行したい人はそのドメインに指定のtxtレコードを設定する
  5. そのtxtレコードを発行会社が確認できれば、ドメインの所有権をもっていることが確認できる。
  6. CAが証明書を発行する