@@ -71,6 +71,7 @@ disponibles avec Require</a></li>
7171<li ><img alt =" " src =" ../images/down.gif" /> <a href =" #sslclienthellovars" >SSLClientHelloVars</a ></li >
7272<li ><img alt =" " src =" ../images/down.gif" /> <a href =" #sslcompression" >SSLCompression</a ></li >
7373<li ><img alt =" " src =" ../images/down.gif" /> <a href =" #sslcryptodevice" >SSLCryptoDevice</a ></li >
74+ <li ><img alt =" " src =" ../images/down.gif" /> <a href =" #sslechkeydir" >SSLECHKeyDir</a ></li >
7475<li ><img alt =" " src =" ../images/down.gif" /> <a href =" #sslengine" >SSLEngine</a ></li >
7576<li ><img alt =" " src =" ../images/down.gif" /> <a href =" #sslfips" >SSLFIPS</a ></li >
7677<li ><img alt =" " src =" ../images/down.gif" /> <a href =" #sslhonorcipherorder" >SSLHonorCipherOrder</a ></li >
@@ -291,6 +292,13 @@ hexadécimale avec la longueur de la chaîne au début</td></tr>
291292<tr ><td ><code >SSL_CLIENTHELLO_VERSIONS</code ></td > <td >chaîne</td >
292293<td >Valeur de l’extension Supported Versions (43) de ClientHello sous la forme de quatre
293294caractères hexadécimaux par item</td ></tr >
295+ <tr class =" odd" ><td ><code >SSL_ECH_STATUS</code ></td > <td >chaîne</td >
296+ <td ><code >success</code > signifie que les autres pensent aussi ce qu'ils
297+ disent</td ></tr >
298+ <tr ><td ><code >SSL_ECH_INNER_SNI</code ></td > <td >chaîne</td >
299+ <td >la valeur SNI chiffrée en ECH (ou `NONE`)</td ></tr >
300+ <tr class =" odd" ><td ><code >SSL_ECH_OUTER_SNI</code ></td > <td >chaîne</td >
301+ <td >la valeur SNI vue au format texte (ou `NONE`)</td ></tr >
294302</table >
295303
296304<p ><em >x509</em > spécifie un élément de DN X.509 parmi
@@ -1218,6 +1226,122 @@ configuration d'OpenSSL et il doit prendre en charge la <a href="https://docs.op
12181226STORE</a > pour les <a href =" https://tools.ietf.org/html/rfc7512" >URIs PKCS#11</a >.
12191227</p >
12201228
1229+ </div >
1230+ <div class =" top" ><a href =" #page-header" ><img alt =" top" src =" ../images/up.gif" /></a ></div >
1231+ <div class =" directive-section" ><h2 ><a name =" sslechkeydir" id =" sslechkeydir" >Directive</a > <a name =" SSLECHKeyDir" id =" SSLECHKeyDir" >SSLECHKeyDir</a > <a title =" Lien permanent" href =" #sslechkeydir" class =" permalink" >¶ </a ></h2 >
1232+ <table class =" directive" >
1233+ <tr ><th ><a href =" directive-dict.html#Description" >Description:</a ></th ><td >Chargement des fichiers PEM « Encrypted Client Hello » (ECH) dans le
1234+ répertoire spécifié</td ></tr >
1235+ <tr ><th ><a href =" directive-dict.html#Syntax" >Syntaxe:</a ></th ><td ><code >SSLECHKeyDir <em >dirname</em ></code ></td ></tr >
1236+ <tr ><th ><a href =" directive-dict.html#Context" >Contexte:</a ></th ><td >configuration globale</td ></tr >
1237+ <tr ><th ><a href =" directive-dict.html#Status" >Statut:</a ></th ><td >Extension</td ></tr >
1238+ <tr ><th ><a href =" directive-dict.html#Module" >Module:</a ></th ><td >mod_ssl</td ></tr >
1239+ <tr ><th ><a href =" directive-dict.html#Compatibility" >Compatibilité:</a ></th ><td >Disponible à partir de la version 2.5.1 du serveur HTTP Apache</td ></tr >
1240+ </table >
1241+
1242+ <p >
1243+ ECH est décrit dans <a href =" https://datatracker.ietf.org/doc/draft-ietf-tls-esni/" >draft-ietf-tls-esni</a >
1244+ ; httpd prend en charge ECH « shared-mode » où l’instance de httpd effectue le
1245+ déchiffrement ECH et héberge les sites web ECH « public-name » et « backend ».
1246+ </p >
1247+
1248+ <p >La directive <code >SSLECHKeyDir</code > permet de définir le répertoire où les
1249+ fichiers PEM ECH (nommés <code >*.ech</code >) sont stockés. Lorsqu’un fichier PEM
1250+ ECH a été chargé avec succès, httpd va effectuer un déchiffrement ECH et, si ce
1251+ dernier réussit, va ouvrir la session TLS correspondante en utilisant le SNI
1252+ depuis le ClientHello interne.
1253+ </p >
1254+
1255+ <div class =" example" ><h3 >Exemple de configuration ECH</h3 ><pre class =" prettyprint lang-config" >...
1256+ SSLEngine On
1257+ SSLProtocol TLSv1.3
1258+ SSLECHKeyDir /etc/apache2/echkeydir
1259+ ...
1260+ # virtual hosts
1261+ < VirtualHost *:443>
1262+ SSLEngine On
1263+ SSLProtocol TLSv1.3
1264+ ServerName example.com
1265+ DocumentRoot "/var/www/dir-example.com"
1266+ < /VirtualHost>
1267+ < VirtualHost *:443>
1268+ SSLEngine On
1269+ SSLProtocol TLSv1.3
1270+ ServerName foo.example.com
1271+ DocumentRoot "/var/www/dir-foo.example.com"
1272+ < /VirtualHost>
1273+ ...</pre >
1274+ </div >
1275+
1276+ <div class =" note" ><h3 >Génération et publication de la clé ECH</h3 >
1277+ <p >
1278+ Dans ce qui précède, nous décrivons une configuration qui utilise
1279+ <code >example.com</code > comme <code >public-name</code > ECH et où
1280+ <code >foo.example.com</code > est un site web pour lequel nous voulons utiliser
1281+ ECH, les deux étant hébergés par la même instance de httpd.
1282+ </p >
1283+ <p >
1284+ L’utilisation d’ECH nécessite le chargement par httpd d’une paire de clés ECH
1285+ avec une composante privée pour le déchiffrement ECH. Pour les navigateurs, il
1286+ sera nécessaire que la composante publique de cette paire de clés soit publiée
1287+ dans le DNS. À l’aide d’OpenSSL, nous générons et stockons cette paire de clés
1288+ dans un fichier formaté PEM ECH comme indiqué ci-après.
1289+ </p >
1290+ <p >
1291+ Pour générer une paire de clés ECH et stocker le résultat dans un fichier PEM
1292+ ECH, utilisez la ligne de commande openssl prenant en charge ECH. Vous devez
1293+ aussi fournir le <code >« nom publique »</code > (<code >public-name</code >) requis
1294+ par le protocole ECH.
1295+ </p >
1296+ <p >
1297+ Les opérations de génération des clés doivent être effectuées sous n’importe
1298+ quel compte local utilisé pour la configuration de httpd.
1299+ </p >
1300+ <div class =" example" ><h3 >Exemple : Génération de clés ECH</h3 ><pre class =" prettyprint lang-config" >~# OSSL=/home/user/code/openssl/apps/openssl
1301+ ~# mkdir -p /etc/apache2/echkeydir
1302+ ~# chmod 700 /etc/apache2/echkeydir
1303+ ~# cd /etc/apache2/echkeydir
1304+ ~# $OSSL ech -public-name example.com -o example.com.pem.ech
1305+ ~# cat example.com.pem.ech
1306+ -----BEGIN PRIVATE KEY-----
1307+ MC4CAQAwBQYDK2VuBCIEIJi22Im2rJ/lJqzNFZdGfsVfmknXAc8xz3fYPhD0Na5I
1308+ -----END PRIVATE KEY-----
1309+ -----BEGIN ECHCONFIG-----
1310+ AD7+DQA6QwAgACA8mxkEsSTp2xXC/RUFCC6CZMMgdM4x1iTWKu3EONjbMAAEAAEA
1311+ AQALZXhhbXBsZS5vcmcAAA==
1312+ -----END ECHCONFIG-----</pre >
1313+ </div >
1314+ <p >
1315+ La valeur ECHConfig doit ensuite être publiée dans le DNS sous forme d’un
1316+ enregistrement ressource HTTPS de façon à être accessible comme indiqué
1317+ ci-après :
1318+ </p >
1319+ <div class =" example" ><h3 >Accéder à une configuration ECH depuis le DNS</h3 ><pre class =" prettyprint lang-config" >$ dig +short HTTPS foo.example.com
1320+ 1 . ech=AD7+DQA6QwAgACA8mxkEsSTp2xXC/RUFCC6CZMMgdM4x1iTWKu3EONjbMAAEAAEAAQALZXhhbXBsZS5vcmcAAA==</pre >
1321+ </div >
1322+ <p >
1323+ Divers autres champs peuvent être inclus dans un enregistrement ressource HTTPS.
1324+ Les méthodes existantes pour publier des enregistrements DNS peuvent être
1325+ utilisées pour effectuer ce qui précède pour de nombreux déploiements de httpd.
1326+ Dans certains cas, il pourra être intéressant d’utiliser
1327+ <a href =" https://datatracker.ietf.org/doc/html/draft-ietf-tls-wkech" >
1328+ un URI connu pour les paramètres du service de publication</a > conçu pour
1329+ assister les serveurs web , par exemple dans la gestion des rotations fréquentes
1330+ de clés ECH.
1331+ </p >
1332+ </div >
1333+
1334+ <div class =" note" ><h3 >Rechargement des clés ECH</h3 >
1335+
1336+ <p >
1337+ Invoquer httpd avec l’argument de ligne de commande <code >-k graceful</code >
1338+ provoque un rechargement « en douceur » de la configuration sans fermer les
1339+ connexions existantes.
1340+ </p >
1341+
1342+ </div >
1343+
1344+
12211345</div >
12221346<div class =" top" ><a href =" #page-header" ><img alt =" top" src =" ../images/up.gif" /></a ></div >
12231347<div class =" directive-section" ><h2 ><a name =" sslengine" id =" sslengine" >Directive</a > <a name =" SSLEngine" id =" SSLEngine" >SSLEngine</a > <a title =" Lien permanent" href =" #sslengine" class =" permalink" >¶ </a ></h2 >
0 commit comments