3. ECHConfig ファイル
3. ECHConfig ファイル
PEM ECH ファイルは, 0 個または 1 個の秘密鍵と, 1 個のエンコード済み ECHConfigList を含みます. 公開鍵と秘密鍵はいずれも PEM エンコード [RFC7468] されなければなりません.
このファイルは, 秘密鍵が存在する場合はその PEM エンコード, 続いて ECHConfigList としての公開鍵の PEM エンコードを連結したものです. 秘密鍵が存在する場合, ECHConfigList はその秘密鍵に一致する ECHConfig を含まなければなりません. 秘密鍵は PKCS #8 PrivateKey [RFC7468] としてエンコードされなければなりません.
公開鍵は, [RFC9848] に記述されるように HTTPS リソースレコードを使って DNS で公開できる ECHConfigList 値を base64 エンコードした形式でなければなりません. 公開鍵の PEM ファイル区切りには文字列 "ECHCONFIG" を使用しなければなりません. PEM エンコードされた ECHConfigList の後にある内容は無視されるべきです.
図 1 は ECHConfig PEM ファイルの例です.
-----BEGIN PRIVATE KEY-----
MC4CAQAwBQYDK2VuBCIEICjd4yGRdsoP9gU7YT7My8DHx1Tjme8GYDXrOMCi8v1V
-----END PRIVATE KEY-----
-----BEGIN ECHCONFIG-----
AD7+DQA65wAgACA8wVN2BtscOl3vQheUzHeIkVmKIiydUhDCliA4iyQRCwAEAAEA
AQALZXhhbXBsZS5jb20AAA==
-----END ECHCONFIG-----
図 1: ECHConfig PEM ファイルの例
この ECHConfigList が foo.example.com のために DNS で公開されている場合, 図 2 のようにアクセスできます.
$ dig +short HTTPS foo.example.com
1 . ech=AD7+DQA65wAgACA8wVN2BtscOl3vQheUzHeIkVmKIiydUhDCliA4iyQR
wAEAAEAAQALZXhhbXBsZS5jb20AAA==
図 2: DNS から ECHConfigList を取得するための dig の使用
このファイル形式を使う TLS サーバは, 全体設定の一部として複数のファイル名を設定することがあります. たとえば, ECH fallback シナリオでそれらのファイルの一部に含まれる ECHConfigList 値だけを retry_configs として使う場合です.
PEM ファイル内の ECHConfigList は複数の ECHConfig を含むことがあります. たとえば, それらの値が異なる拡張や異なる public_name 値を含む場合です. [RFC9849] と一致して, ECHConfig 値は優先度の高い順に現れます. ECHConfigList が retry_configs として使われる場合, 異なる公開鍵を含むことがあります. それでも, 秘密鍵が存在する場合, その鍵は ECHConfig 値のいずれかの公開鍵と一致しなければなりません.