Passa al contenuto principale

3. File ECHConfig

3. File ECHConfig

Un file PEM ECH contiene zero o una chiave privata e un ECHConfigList codificato. Le chiavi pubbliche e private devono essere entrambe codificate in PEM [RFC7468].

Il file contiene la concatenazione della codifica PEM della chiave privata, se presente, seguita dalla codifica PEM delle chiavi pubbliche come ECHConfigList. Quando è presente una chiave privata, l'ECHConfigList deve contenere un ECHConfig corrispondente alla chiave privata. La chiave privata deve essere codificata come PKCS #8 PrivateKey [RFC7468].

Le chiavi pubbliche devono essere la forma codificata in base64 di un valore ECHConfigList che può essere pubblicato nel DNS usando un record di risorsa HTTPS come descritto in [RFC9848]. La stringa "ECHCONFIG" deve essere usata nel delimitatore del file PEM per la chiave pubblica. Qualsiasi contenuto dopo l'ECHConfigList codificato in PEM dovrebbe essere ignorato.

La Figura 1 mostra un esempio di file PEM ECHConfig.

-----BEGIN PRIVATE KEY-----
MC4CAQAwBQYDK2VuBCIEICjd4yGRdsoP9gU7YT7My8DHx1Tjme8GYDXrOMCi8v1V
-----END PRIVATE KEY-----
-----BEGIN ECHCONFIG-----
AD7+DQA65wAgACA8wVN2BtscOl3vQheUzHeIkVmKIiydUhDCliA4iyQRCwAEAAEA
AQALZXhhbXBsZS5jb20AAA==
-----END ECHCONFIG-----

Figura 1: Esempio di file PEM ECHConfig

Se quell'ECHConfigList fosse pubblicato nel DNS per foo.example.com, potrebbe essere consultato come mostrato nella Figura 2.

$ dig +short HTTPS foo.example.com
1 . ech=AD7+DQA65wAgACA8wVN2BtscOl3vQheUzHeIkVmKIiydUhDCliA4iyQR
wAEAAEAAQALZXhhbXBsZS5jb20AAA==

Figura 2: Uso di dig per ottenere l'ECHConfigList dal DNS

I server TLS che usano questo formato di file potrebbero configurare più nomi di file come parte della configurazione complessiva, per esempio quando solo i valori ECHConfigList di un sottoinsieme di tali file devono essere usati come retry_configs nello scenario di fallback ECH.

Un ECHConfigList in un file PEM potrebbe contenere più di un ECHConfig, per esempio quando tali valori contengono estensioni diverse o valori public_name diversi. In coerenza con [RFC9849], i valori ECHConfig appaiono in ordine decrescente di preferenza. Se l'ECHConfigList è usato come retry_configs, potrebbe contenere chiavi pubbliche diverse. Tuttavia, quando è presente una chiave privata, quella chiave deve corrispondere alla chiave pubblica di uno dei valori ECHConfig.