3. Fichier ECHConfig
3. Fichier ECHConfig
Un fichier PEM ECH contient zéro ou une clé privée et un ECHConfigList encodé. Les clés publiques et privées doivent toutes deux être encodées en PEM [RFC7468].
Le fichier contient la concaténation de l'encodage PEM de la clé privée, si elle est présente, suivie de l'encodage PEM des clés publiques sous la forme d'un ECHConfigList. Lorsqu'une clé privée est présente, l'ECHConfigList doit contenir un ECHConfig correspondant à cette clé privée. La clé privée doit être encodée comme un PKCS #8 PrivateKey [RFC7468].
Les clés publiques doivent être la forme encodée en base64 d'une valeur ECHConfigList pouvant être publiée dans le DNS au moyen d'un enregistrement de ressource HTTPS comme décrit dans [RFC9848]. La chaîne "ECHCONFIG" doit être utilisée dans le délimiteur du fichier PEM pour la clé publique. Tout contenu après l'ECHConfigList encodé en PEM devrait être ignoré.
La Figure 1 montre un exemple de fichier PEM ECHConfig.
-----BEGIN PRIVATE KEY-----
MC4CAQAwBQYDK2VuBCIEICjd4yGRdsoP9gU7YT7My8DHx1Tjme8GYDXrOMCi8v1V
-----END PRIVATE KEY-----
-----BEGIN ECHCONFIG-----
AD7+DQA65wAgACA8wVN2BtscOl3vQheUzHeIkVmKIiydUhDCliA4iyQRCwAEAAEA
AQALZXhhbXBsZS5jb20AAA==
-----END ECHCONFIG-----
Figure 1: Exemple de fichier PEM ECHConfig
Si cet ECHConfigList était publié dans le DNS pour foo.example.com, il pourrait être consulté comme indiqué dans la Figure 2.
$ dig +short HTTPS foo.example.com
1 . ech=AD7+DQA65wAgACA8wVN2BtscOl3vQheUzHeIkVmKIiydUhDCliA4iyQR
wAEAAEAAQALZXhhbXBsZS5jb20AAA==
Figure 2: Utilisation de dig pour obtenir l'ECHConfigList depuis le DNS
Les serveurs TLS qui utilisent ce format de fichier peuvent configurer plusieurs noms de fichier dans leur configuration globale, par exemple lorsque seules les valeurs ECHConfigList d'un sous-ensemble de ces fichiers doivent être utilisées comme retry_configs dans le scénario de repli ECH.
Un ECHConfigList dans un fichier PEM peut contenir plusieurs ECHConfig, par exemple lorsque ces valeurs contiennent différentes extensions ou différentes valeurs public_name. Conformément à [RFC9849], les valeurs ECHConfig apparaissent par ordre décroissant de préférence. Si l'ECHConfigList est utilisé comme retry_configs, il peut contenir différentes clés publiques. Néanmoins, lorsqu'une clé privée est présente, cette clé doit correspondre à la clé publique de l'une des valeurs ECHConfig.