blob: 1a9901f1651c0aa6f1d1e0bc944eba6d6bcf9aab [file] [log] [blame]
<?xml version="1.0"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
<!-- English Revision : 1690137 -->
<!-- French translation : Lucien GENTIS -->
<!-- $LastChangedRevision: 2015071101 $ -->
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<modulesynopsis metafile="mod_ssl_ct.xml.meta">
<name>mod_ssl_ct</name>
<description>Impl&eacute;mentation de la transparence des certificats
(Certificat Transparency - RFC 6962)
</description>
<status>Extension</status>
<sourcefile>mod_ssl_ct.c</sourcefile>
<identifier>ssl_ct_module</identifier>
<summary>
<p>Ce module impl&eacute;mente la transparence des certificats en conjonction
avec <module>mod_ssl</module> et les outils en ligne de commande du
projet open source <a
href="https://code.google.com/p/certificate-transparency/">certificate-transparency</a>.
Le but de la transparence des certificats consiste &agrave; r&eacute;v&eacute;ler
l'utilisation de certificats de confiance d&eacute;livr&eacute;s par
erreur ou dans un but malintentionn&eacute;. Vous trouverez plus de d&eacute;tails &agrave;
propos de la transparence des certificats ici : <a
href="http://www.certificate-transparency.org/">http://www.certificate-transparency.org/</a>.
Voici la signification des termes utilis&eacute;s dans cette documentation :</p>
<dl>
<dt>Certificate log</dt>
<dd>Un Certificate log, auquel on fera r&eacute;f&eacute;rence avec le simple
terme <q>log</q> tout au long de ce document, est un service r&eacute;seau
auquel les certificats de serveurs sont soumis. Un agent
utilisateur peut v&eacute;rifier que le certificat d'un serveur auquel il
acc&egrave;de a bien &eacute;t&eacute; soumis &agrave; un log auquel il fait confiance, et que le log
lui-m&ecirc;me n'a pas rencontr&eacute; de probl&egrave;me avec ce certificat.</dd>
<dt>Horodatage sign&eacute; du certificat (Signed Certificate Timestamp - SCT)</dt>
<dd>Il s'agit d'une information en provenance d'un log indiquant qu'il
a valid&eacute; un certificat. Cet horodatage est sign&eacute; avec la cl&eacute; publique
du log. Un ou plusieurs SCTs sont pass&eacute;s au client durant la phase de
n&eacute;gociation de la connexion, soit dans le ServerHello (extension TLS),
soit dans l'extension du certificat, soit dans une r&eacute;ponse OCSP
jointe.</dd>
</dl>
<p>Cette impl&eacute;mentation pour Apache httpd fournit les fonctionnalit&eacute;s
suivantes pout les serveurs et mandataires TLS :</p>
<ul>
<li>Les SCTs peuvent &ecirc;tre extraits automatiquement des logs, et en
conjonction avec tout SCT d&eacute;fini statiquement, envoy&eacute;s aux clients
qui les supportent durant la phase ServerHello de la n&eacute;gociation de la
connexion.</li>
<li>Le serveur mandataire peut recevoir les SCTs en provenance du
serveur original au cours de la phase ServerHello sous la forme d'une
extension de certificat, et/ou au sein des r&eacute;ponses OCSP agraf&eacute;es ;
tout SCT re&ccedil;u peut &ecirc;tre valid&eacute; partiellement en ligne, et
&eacute;ventuellement mis en file d'attente pour un examen plus approfondi
hors ligne.</li>
<li>Le serveur mandataire peut &ecirc;tre configur&eacute; de fa&ccedil;on &agrave; refuser la
communication avec un serveur original qui ne fournit pas de SCT
pouvant &acirc;tre valid&eacute; en ligne.</li>
</ul>
<p>La configuration des logs peut &ecirc;tre d&eacute;finie statiquement au niveau de
la configuration du serveur web, ou enregistr&eacute;e dans une base de donn&eacute;es
SQLite3. Dans ce dernier cas, <module>mod_ssl_ct</module> rechargera &agrave;
intervalles r&eacute;guliers la base de donn&eacute;es, de fa&ccedil;on &agrave; ce que tout
changement dans la configuration de la maintenance et de la propagation
des logs pour un site sp&eacute;cifique ne n&eacute;cessite pas de red&eacute;marrer httpd.</p>
<note>Ce module en est au stade exp&eacute;rimental pour les raisons suivantes
:
<ul>
<li>Tests et retours d'information insuffisants</li>
<li>Repose sur une version non stable (version 1.0.2, Beta 3 ou
sup&eacute;rieure) d'OpenSSL pour les
op&eacute;rations de base</li>
<li>Impl&eacute;mentation de la <a href="#audit">fonctionnalit&eacute; d'audit hors
ligne</a> incompl&egrave;te</li>
</ul>
<p>Les m&eacute;canismes de configuration, le format des donn&eacute;es enregistr&eacute;es
pour l'audit hors ligne, ainsi que d'autres caract&eacute;ristiques sont
appel&eacute;s &agrave; &eacute;voluer en fonction des tests et retours d'informations &agrave;
venir.</p>
</note>
</summary>
<section id="server">
<title>Vue d'ensemble du fonctionnement au niveau du serveur</title>
<p>Les serveurs doivent pouvoir envoyer les SCTs aux clients. Les SCTs
seront envoy&eacute;s sous la forme d'une extension de certificat ou au sein
d'une r&eacute;ponse OCSP agraf&eacute;e sans logique pr&eacute;programm&eacute;e. Ce module g&egrave;re
l'envoi des SCTs configur&eacute;s par l'administrateur ou en provenance des
logs d&eacute;finis.</p>
<p>Le nombre de SCTs envoy&eacute;s au cours de la phase ServerHello (c'est &agrave;
dire les SCTs autres que ceux inclus dans une extension de certificat
ou une r&eacute;ponse OCSP agraf&eacute;e) peut &ecirc;tre limit&eacute; via la directive
<directive module="mod_ssl_ct">CTServerHelloSCTLimit</directive>.</p>
<p>Pour chaque certificat de serveur, un processus maintient une liste
de SCTs &agrave; envoyer au cours de la phase ServerHello ; cette liste est
cr&eacute;&eacute;e &agrave; partir des SCTs configur&eacute;s statiquement, mais aussi &agrave; partir
de ceux re&ccedil;us depuis les logs. Les logs marqu&eacute;s comme suspects ou
arriv&eacute;s &agrave; p&eacute;remption seront ignor&eacute;s. A intervalles r&eacute;guliers, le
processus va soumettre les certificats &agrave; un log selon les besoins
(suite &agrave; un changement de configuration du log ou de sa dur&eacute;e de vie),
et reconstruire la concat&eacute;nation des SCTs.</p>
<p>La liste des SCTs pour un certificat de serveur sera envoy&eacute;e au
cours de la phase ClientHello, lorsque ce certificat de serveur
particulier est utilis&eacute;, &agrave; tout client qui fait savoir qu'il supporte
cette fonctionnalit&eacute;.</p>
</section>
<section id="proxy">
<title>Vue d'ensemble du fonctionnement au niveau du serveur
mandataire</title>
<p>Le serveur mandataire indique qu'il supporte la Transparence des
Certificats au cours de la phase ClientHello en incluant l'extension
<em>signed_certificate_timestamp</em>. Il peut reconna&icirc;tre les SCTs
re&ccedil;us au cours de la phase ServerHello dans une extension du
certificat du serveur original, ou au sein d'une r&eacute;ponse OCSP agraf&eacute;e.</p>
<p>Une v&eacute;rification en ligne est effectu&eacute;e pour tout SCT re&ccedil;u :</p>
<ul>
<li>Le rep&egrave;re de temps de chaque SCT peut &ecirc;tre v&eacute;rifi&eacute; pour voir
s'il n'est pas encore valide en le comparant avec l'heure actuelle
ou tout intervalle de temps valide d&eacute;fini pour le log.</li>
<li>Dans le cas d'un SCT issu d'un log pour lequel une cl&eacute; publique
a &eacute;t&eacute; d&eacute;finie, la signature du serveur sera v&eacute;rifi&eacute;e.</li>
</ul>
<p>Si la v&eacute;rification &eacute;choue ou renvoie un r&eacute;sultat n&eacute;gatif pour au
moins un SCT et si la directive <directive
module="mod_ssl_ct">CTProxyAwareness</directive> est d&eacute;finie &agrave;
<em>require</em>, la tentative de connexion est abandonn&eacute;e.</p>
<p>En outre, si la directive <directive
module="mod_ssl_ct">CTAuditStorage</directive> est d&eacute;finie, la cha&icirc;ne
de certification du serveur et les SCTs sont stock&eacute;s pour une
v&eacute;rification hors ligne.</p>
<p>A titre d'optimisation, la v&eacute;rification en ligne et le stockage des
donn&eacute;es en provenance du serveur ne sont effectu&eacute;s que la premi&egrave;re
fois o&ugrave; un processus enfant du serveur web re&ccedil;oit ces donn&eacute;es, ce qui
permet d'&eacute;conomiser du temps processeur et de l'espace disque. Dans le
cas d'une configuration typique de mandataire inverse, seule une
l&eacute;g&egrave;re augmentation de la charge processeur sera induite.</p>
</section>
<section id="logconf">
<title>Configuration du log</title>
<p>Les serveurs et les mandataires utilisent des informations
diff&eacute;rentes en ce qui concerne les logs et leurs traitements. Cette
<em>configuration des logs</em> peut &ecirc;tre effectu&eacute;e de deux mani&egrave;res :</p>
<ul>
<li>On peut cr&eacute;er une base de donn&eacute;es pour configurer le log en
utilisant la commande <program>ctlogconfig</program> et en
d&eacute;finissant le chemin vers cette base de donn&eacute;es via la directive
<directive module="mod_ssl_ct">CTLogConfig</directive>.
<module>mod_ssl_ct</module> relit la base de donn&eacute;es &agrave;
intervalles r&eacute;guliers ; cette m&eacute;thode de configuration supporte donc
les mises &agrave; jour dynamiques. En outre, la commande d'audit hors
ligne <code>ctauditscts</code> peut utiliser cette configuration pour
trouver l'URL des logs.</li>
<li>On peut aussi configurer les logs statiquement via la directive
<directive module="mod_ssl_ct">CTStaticLogConfig</directive>. Toute
modification de cette directive n&eacute;cessitera alors un red&eacute;marrage du serveur
pour &ecirc;tre prise en compte, comme pour toutes les autres directives.</li>
</ul>
<p>Les &eacute;l&eacute;ments de configuration pouvant &ecirc;tre d&eacute;finis par l'une ou
l'autre m&eacute;thode sont les suivants :</p>
<dl>
<dt>Identifiant du log</dt>
<dd>L'identifiant du log est le hash SHA-256 de sa cl&eacute; publique, et
est inclus dans tout SCT. Ceci permet d'identifier ais&eacute;ment un log
particulier lorsqu'on d&eacute;finit des plages de rep&egrave;res de temps
valides ou certaines autres informations.</dd>
<dt>Cl&eacute; publique du log</dt>
<dd>Un mandataire doit disposer de la cl&eacute; publique du log afin de
pouvoir v&eacute;rifier la signature dans les SCTs en provenance de ce log.
<br />
Un serveur doit poss&eacute;der la cl&eacute; publique du log afin de pouvoir lui
soumettre des certificats.</dd>
<dt>Configuration g&eacute;n&eacute;rale confiance/m&eacute;fiance</dt>
<dd>Il s'agit d'un m&eacute;canisme permettant d'instaurer une m&eacute;fiance ou
de restaurer une confiance envers un log donn&eacute; pour certaines
raisons particuli&egrave;res (y compris la simple interruption des
interactions avec le log dans les situations o&ugrave; il est hors ligne).</dd>
<dt>Rep&egrave;res de temps minima et/ou maxima valides</dt>
<dd>Lorsqu'ils sont d&eacute;finis, le mandataire pourra v&eacute;rifier que les
rep&egrave;res de temps contenus dans les SCTs sont compris dans une plage
valide</dd>
<dt>URL du log</dt>
<dd>Pour qu'un serveur puisse soumettre des certificats de serveur &agrave;
un log, il doit conna&icirc;tre l'URL de ce dernier (pour son API). Le
serveur soumettra chaque certificat de serveur afin d'obtenir un
SCT pour chaque log dont l'URL est d&eacute;finie, sauf pour les logs aussi
marqu&eacute;s comme non dignes de confiance ou si l'heure actuelle ne se
situe dans aucune des plages de temps valides d&eacute;finies.
<br />
L'audit hors ligne des SCTs re&ccedil;us par un mandataire n&eacute;cessite aussi
de conna&icirc;tre l'URL du log.</dd>
</dl>
<p>En g&eacute;n&eacute;ral, seuls quelque uns de ces &eacute;l&eacute;ments de configuration sont
d&eacute;finis pour un log donn&eacute;. Pour plus de d&eacute;tails, veuillez vous r&eacute;f&eacute;rer
&agrave; la documentation de la directive <directive
module="mod_ssl_ct">CTStaticLogConfig</directive> et de la commande
<program>ctlogconfig</program>.</p>
</section>
<section id="static">
<title>Stockage des SCTs sous une forme compr&eacute;hensible pour mod_ssl_ct</title>
<p>Le module <module>mod_ssl_ct</module> permet de configurer les SCTs
de mani&egrave;re statique via la directive
<directive>CTStaticSCTs</directive>. Ils doivent alors &ecirc;tre sous une forme
binaire pr&ecirc;te &agrave; &ecirc;tre envoy&eacute;e au client.</p>
<p>Vous trouverez dans le <a
href="https://github.com/tomrittervg/ct-tools">D&eacute;p&ocirc;t ct-tools de Tom
Ritter</a> un exemple de code sous la forme d'un script Python
(<code>write-sct.py</code>) permettant de g&eacute;n&eacute;rer un SCT sous un
format correct avec des donn&eacute;es en provenance d'un log.</p>
</section>
<section id="logging">
<title>Journalisation des rep&egrave;res de temps des certificats (CT) dans
le journal des acc&egrave;s</title>
<p>Dans les deux modes mandataire et serveur, les variables
<code>SSL_CT_PROXY_STATUS</code> et
<code>SSL_CT_CLIENT_STATUS</code> sont d&eacute;finies et indiquent si le
serveur supporte les CTs.</p>
<p>Dans le mode mandataire, la variable
<code>SSL_CT_PROXY_SCT_SOURCES</code> est d&eacute;finie pour indiquer si des
SCTs ont &eacute;t&eacute; re&ccedil;us ainsi que leur source (phase ServerHello de la
connexion, extension de certificat, etc...).</p>
<p>Les valeurs de ces variables peuvent &ecirc;tre journalis&eacute;es via la
cha&icirc;ne de format <code>%{<em>varname</em>}e</code> de
<module>mod_log_config</module>.</p>
</section>
<section id="audit">
<title>Audit hors ligne pour mandataire</title>
<p>Le support de cette fonctionnalit&eacute; en est au stade exp&eacute;rimental, et
est impl&eacute;ment&eacute; par la commande <code>ctauditscts</code>, qui repose
elle-m&ecirc;me sur l'utilitaire <code>verify_single_proof.py</code> du
projet open source <em>certificate-transparency</em>. La commande
<code>ctauditscts</code> peut parcourir des donn&eacute;es, et ainsi effectuer
un audit hors ligne (activ&eacute; via la directive <directive
module="mod_ssl_ct">CTAuditStorage</directive>) en invoquant
l'utilitaire <code>verify_single_proof.py</code>.</p>
<p>Voici quelques indication &agrave; l'&eacute;tat brut pour l'utilisation de
<code>ctauditscts</code> :</p>
<ul>
<li>Cr&eacute;ez un <em>virtualenv</em> en utilisant le fichier
<code>requirements.txt</code> du projet
<em>certificate-transparency</em>, et ex&eacute;cuter les &eacute;tapes suivantes
avec ce <em>virtualenv</em> activ&eacute;.</li>
<li>D&eacute;finissez <code>PYTHONPATH</code> de fa&ccedil;on &agrave; inclure le
r&eacute;pertoire <code>python</code> dans les chemins par d&eacute;faut des
utilitaires du projet <em>certificate-transparency</em>.</li>
<li>D&eacute;finissez <code>PATH</code> de fa&ccedil;on &agrave; inclure le chemin du
r&eacute;pertoire <code>python/ct/client/tools</code>.</li>
<li>Ex&eacute;cutez la commande <code>ctauditscts</code> avec comme
arguments la valeur de la directive
<directive>CTAuditStorage</directive>, et &eacute;ventuellement le chemin
de la base de donn&eacute;es de configuration des logs. Cette derni&egrave;re sera
utilis&eacute;e pour extraire les URLs des logs en fonction de leurs
identifiants.</li>
</ul>
<p>Les donn&eacute;es stock&eacute;es &agrave; des fins d'audit peuvent aussi &ecirc;tre
utilis&eacute;es par d'autres programmes ; veuillez vous r&eacute;f&eacute;rer au code
source de <code>ctauditscts</code> pour plus de d&eacute;tails &agrave; propos du
traitement des donn&eacute;es.</p>
</section>
<directivesynopsis>
<name>CTAuditStorage</name>
<description>R&eacute;pertoire de stockage des donn&eacute;es pour l'audit hors ligne</description>
<syntax>CTAuditStorage <em>directory</em></syntax>
<default>none</default>
<contextlist><context>server config</context></contextlist>
<usage>
<p>La directive <directive>CTAuditStorage</directive> permet de
d&eacute;finir le chemin du r&eacute;pertoire o&ugrave; les donn&eacute;es destin&eacute;es &agrave; un audit hors
ligne seront stock&eacute;es. Ce r&eacute;pertoire doit exister au pr&eacute;alable. Si le
chemin contenu dans l'argument <em>directory</em> n'est pas absolu, il
sera consid&eacute;r&eacute; comme relatif au chemin d&eacute;fini par la directive
<directive module="core">DefaultRuntimeDir</directive>.</p>
<p>Si cette directive n'est pas d&eacute;finie, aucune donn&eacute;e ne sera stock&eacute;e
en vue d'un audit hors ligne.</p>
<p>Le r&eacute;pertoire consid&eacute;r&eacute; contiendra des fichiers nomm&eacute;s
<code><em>PID</em>.tmp</code> pour les processus enfants actifs et
<code><em>PID</em>.out</code> pour les processus enfants termin&eacute;s. Les
donn&eacute;es disponibles pour un audit hors ligne sont donc contenues dans les
fichiers <code>.out</code>. La commande exp&eacute;rimentale
<code>ctauditscts</code> (situ&eacute;e dans l'arborescence des sources de
httpd, mais non encore prise en compte par le processus
d'installation), fait appel aux utilitaires du projet
<em>certificate-transparency</em> pour effectuer l'audit.</p>
</usage>
</directivesynopsis>
<directivesynopsis>
<name>CTLogClient</name>
<description>Chemin de l'utilitaire client du log certificate-transparency</description>
<syntax>CTLogClient <em>executable</em></syntax>
<default>none</default>
<contextlist><context>server config</context>
</contextlist>
<usage>
<p><em>executable</em> est le chemin complet de l'utilitaire client du
log qui est normalement le fichier <code>cpp/client/ct</code> (ou
<code>ct.exe</code>) de l'arborescence des sources du projet open
source <a
href="https://code.google.com/p/certificate-transparency/">certificate-transparency</a>.</p>
<p>Il est possible d'utiliser une impl&eacute;mentation alternative pour
extraire les SCTs d'un certificat de serveur &agrave; partir du moment o&ugrave;
l'interface de la ligne de commande est &eacute;quivalente.</p>
<p>Si cette directive n'est pas d&eacute;finie, il n'est pas possible de
soumettre les certificats aux logs pour en extraire les SCTs ; seuls
les SCTs g&eacute;r&eacute;s par l'administrateur ou situ&eacute;s dans une extension de
certificat seront alors fournis aux clients.</p>
</usage>
</directivesynopsis>
<directivesynopsis>
<name>CTLogConfigDB</name>
<description>Base de donn&eacute;es pour la configuration des logs avec mises &agrave;
jour dynamiques</description>
<syntax>CTLogConfigDB <em>filename</em></syntax>
<default>none</default>
<contextlist><context>server config</context></contextlist>
<usage>
<p>La directive <directive>CTLogConfigDB</directive> permet de d&eacute;finir
le nom de la base de donn&eacute;es contenant la configuration des logs
connus. Si le chemin contenu dans <em>filename</em> n'est pas absolu,
il est consid&eacute;r&eacute; comme relatif au chemin d&eacute;fini par la directive
<directive module="core">ServerRoot</directive>.</p>
<p>Veuillez vous r&eacute;f&eacute;rer &agrave; la documentation du programme
<program>ctlogconfig</program> qui g&egrave;re la base de donn&eacute;es.</p>
</usage>
</directivesynopsis>
<directivesynopsis>
<name>CTMaxSCTAge</name>
<description>Age maximum d'un SCT obtenu depuis un log avant son
raffra&icirc;chissement</description>
<syntax>CTMaxSCTAge <em>num-seconds</em></syntax>
<default>1 jour</default>
<contextlist><context>server config</context></contextlist>
<usage>
<p>Les certificats de serveur dont les SCTs sont sup&eacute;rieurs &agrave; cet &acirc;ge
maximum seront soumis &agrave; nouveau aux logs d&eacute;finis. En g&eacute;n&eacute;ral, le log
va renvoyer le m&ecirc;me SCT que pr&eacute;c&eacute;demment, mais ceux-ci font alors l'objet
d'une op&eacute;ration de la part du log. Les SCTs seront raffra&icirc;chis autant que
n&eacute;cessaire au cours du fonctionnement normal du serveur, les nouveaux
SCTs &eacute;tant envoy&eacute;s aux clients au fur et &agrave; mesure de leur
disponibilit&eacute;.</p>
</usage>
</directivesynopsis>
<directivesynopsis>
<name>CTProxyAwareness</name>
<description>Niveau de prise en compte et de mise en oeuvre des CTs pour un
mandataire
</description>
<syntax>CTProxyAwareness <em>oblivious|aware|require</em></syntax>
<default>aware</default>
<contextlist><context>server config</context>
<context>virtual host</context></contextlist>
<usage>
<p>Cette directive permet de contr&ocirc;ler la prise en compte et les
recherches de SCTs valides pour un mandataire. Les options disponibles
sont les suivantes :</p>
<dl>
<dt>oblivious</dt>
<dd>Le mandataire de demandera jamais de SCTs, et par cons&eacute;quent
n'en examinera pas. Le processus de transparance des certificats est
alors enti&egrave;rement d&eacute;sactiv&eacute; pour ce mandataire.</dd>
<dt>aware</dt>
<dd>Le mandataire prendra en charge l'ensemble du processus de
transparence des certificats, &agrave; savoir la recherche de SCTs et leur
examen. Le mandataire n'interrompra cependant pas la connexion si le
serveur original ne fournit pas de SCTs valides.</dd>
<dt>require</dt>
<dd>Le mandataire interrompra la connexion avec le serveur original
si ce dernir ne fournit pas au moins un SCT qui passe avec succ&egrave;s le
test de validation en ligne.</dd>
</dl>
</usage>
</directivesynopsis>
<directivesynopsis>
<name>CTSCTStorage</name>
<description>R&eacute;pertoire o&ugrave; les SCTs sont stock&eacute;s</description>
<syntax>CTSCTStorage <em>directory</em></syntax>
<default>none</default>
<contextlist><context>server config</context>
</contextlist>
<usage>
<p>La directive <directive>CTSCTStorage</directive> permet de d&eacute;finir
le nom du r&eacute;pertoire o&ugrave; les SCTs et listes de SCTs seront stock&eacute;s. Si
le chemin contenu dans <em>directory</em> n'est pas absolu, il sera
consid&eacute;r&eacute; comme relatif au chemin d&eacute;fini par la directive <directive
module="core">DefaultRuntimeDir</directive>.</p>
<p>Chaque certificat voit ses informations stock&eacute;es dans un sous-r&eacute;pertoire
qui lui est propre ; le nom de ce sous-r&eacute;pertoire correspond au hash
SHA-256 du certificat consid&eacute;r&eacute;.</p>
<p>Les sous-r&eacute;pertoires propres &agrave; chaque certificat contiennent des
SCTs en provenance des logs d&eacute;finis, des listes de SCTs pr&eacute;par&eacute;es &agrave;
partir des SCTs configur&eacute;s statiquement et des SCTs extraits, ainsi
que diverses informations utilis&eacute;es pour g&eacute;rer les SCTs.</p>
</usage>
</directivesynopsis>
<directivesynopsis>
<name>CTServerHelloSCTLimit</name>
<description>Nombre maximum de SCTs pouvant &ecirc;tre renvoy&eacute;s au cours de la
phase ServerHello</description>
<syntax>CTServerHelloSCTLimit <em>limit</em></syntax>
<default>100</default>
<contextlist><context>server config</context>
</contextlist>
<usage>
<p>Cette directive permet de d&eacute;finir le nombre maximum de SCTs pouvant
&ecirc;tre renvoy&eacute;s par un serveur TLS au cours de la phase ServerHello dans
le cas o&ugrave; le nombre de logs d&eacute;finis et de SCTs d&eacute;finis statiquement
est assez important.</p>
<p>En g&eacute;n&eacute;ral, seuls quelques SCTs sont disponibles, cette directive
n'est donc n&eacute;cessaire que dans certaines circonstances particuli&egrave;res.</p>
<p>Cette directive ne tient pas compte des SCTs contenus dans les
extensions de certificats ou les r&eacute;ponses OCSP agraf&eacute;es.</p>
</usage>
</directivesynopsis>
<directivesynopsis>
<name>CTStaticLogConfig</name>
<description>Configuration statique d'un log</description>
<syntax>CTStaticLogConfig <em>log-id|-</em> <em>public-key-file|-</em>
<em>1|0|-</em> <em>min-timestamp|-</em> <em>max-timestamp|-</em>
<em>log-URL|-</em></syntax>
<default>none</default>
<contextlist><context>server config</context>
</contextlist>
<usage>
<p>Cette directive permet de configurer un log particulier. Elle est
particuli&egrave;rement appropri&eacute;e dans les cas o&ugrave; cette configuration est
rarement modifi&eacute;e. Si votre cas n&eacute;cessite plut&ocirc;t une configuration
dynamique, veuillez vous r&eacute;f&eacute;rer &agrave; la documentation de la directive
<directive module="mod_ssl_ct">CTLogConfigDB</directive>.</p>
<p>Chacun des six champs doit &ecirc;tre renseign&eacute;, mais en g&eacute;n&eacute;ral, la
configuration d'un log n&eacute;cessite peu d'information ; utilisez
<em>-</em> lorsque vous ne disposez d'aucune information &agrave; sp&eacute;cifier
pour un champ particulier. Par exemple, dans le cas d'une
configuration de serveur simple (non mandataire), l'administrateur n'a
besoin de sp&eacute;cifier que l'URL du log auquel soumettre des certificats de
serveur afin d'en extraire les SCTs.</p>
<p>Les champs se d&eacute;finissent comme suit :</p>
<dl>
<dt><em>log-id</em></dt>
<dd>Il s'agit de l'identifiant du log qui correspond au hash SHA-256
de la cl&eacute; publique du log, cod&eacute; en hexad&eacute;cimal. Cette cha&icirc;ne a une
taille de 64 caract&egrave;res.
<br />
Ce champ peut &ecirc;tre omis lorsque <em>public-key-file</em> est
renseign&eacute;.</dd>
<dt><em>public-key-file</em></dt>
<dd>Il s'agit du chemin d'un fichier contenant la cl&eacute; publique du log
cod&eacute;e au format PEM. Si ce chemin n'est pas absolu, il est consid&eacute;r&eacute;
comme relatif au chemin d&eacute;fini par la directive <directive
module="core">ServerRoot</directive>.</dd>
<dt><em>trust/distrust</em></dt>
<dd>D&eacute;finissez ce champ &agrave; <em>1</em> pour marquer le log comme non
digne de confiance, ou pour tout simplement interdire son
utilisation pour le traitement des certificats. D&eacute;finissez ce champ
&agrave; <em>-</em> ou <em>0</em> (valeur par d&eacute;faut) pour accorder votre
confiance au log.</dd>
<dt><em>min-timestamp</em> et <em>max-timestamp</em></dt>
<dd>Un rep&egrave;re de temps (timestamp) est un temps exprim&eacute; en
millisecondes depuis le temps epoch, sans tenir compte des secondes
saut&eacute;es. C'est le format de temps utilis&eacute; dans les SCTs. Le rep&egrave;re
de temps doit &ecirc;tre fourni sous la forme d'un nombre d&eacute;cimal.
<br />
Sp&eacute;cifiez <strong><code>-</code></strong> pour un des rep&egrave;res de
temps s'il n'est pas connu. Par exemple, lorsque vous d&eacute;finissez le
rep&egrave;re de temps minimum valide pour un log qui reste valide,
sp&eacute;cifiez <strong><code>-</code></strong> pour
<em>max-timestamp</em>.
<br />
Les SCTs re&ccedil;u par le mandataire depuis ce log seront invalides si le
rep&egrave;re de temps est plus ancien que <em>min-timestamp</em> ou plus
r&eacute;cent que <em>max-timestamp</em>.</dd>
<dt><em>log-URL</em></dt>
<dd>Il s'agit de l'URL du log auquel soumettre les certificats de
serveur et ainsi obtenir des SCTs &agrave; envoyer aux clients.</dd>
</dl>
</usage>
<seealso>Le paragraphe <a href="#logconf">Configuration des logs</a>
contient des informations &agrave; caract&egrave;re plus g&eacute;n&eacute;ral &agrave; propos des champs qui
peuvent &ecirc;tre d&eacute;finis via cette directive.</seealso>
</directivesynopsis>
<directivesynopsis>
<name>CTStaticSCTs</name>
<description>Configuration statique d'un ou plusieurs SCTs pour un
certificat de serveur
</description>
<syntax>CTStaticSCTs <em>certificate-pem-file</em> <em>sct-directory</em></syntax>
<default>none</default>
<contextlist><context>server config</context>
</contextlist>
<usage>
<p>Cette directive permet de d&eacute;finir statiquement un ou plusieurs SCTs
correspondant &agrave; un certificat de serveur. Ce m&eacute;canisme peut &ecirc;tre
utilis&eacute; &agrave; la place ou en compl&eacute;ment de l'obtention dynamique des SCTs
en provenance des logs. Toute modification dans le jeu de SCTs d'un
certificat de serveur particulier sera prise en compte de mani&egrave;re
dynamique sans avoir &agrave; red&eacute;marrer le serveur.</p>
<p><em>certificate-pem-file</em> fait r&eacute;f&eacute;rence au fichier contenant
le certificat de serveur au format PEM. Si ce chemin n'est pas absolu,
il sera consid&eacute;r&eacute; comme relatif au chemin d&eacute;fini par la directive
<directive module="core">ServerRoot</directive>.</p>
<p><em>sct-directory</em> doit contenir le chemin vers un ou plusieurs
fichiers poss&eacute;dant l'extension de nom de fichier <code>.sct</code>,
repr&eacute;sentant un ou plusieurs SCTs correspondant au certificat de
serveur. Si ce chemin n'est pas absolu,
il sera consid&eacute;r&eacute; comme relatif au chemin d&eacute;fini par la directive
<directive module="core">ServerRoot</directive>.</p>
<p>Si <em>sct-directory</em> est vide, aucun message d'erreur ne sera
affich&eacute;.</p>
<p>Cette directive peut servir &agrave; identifier des r&eacute;pertoires de SCTs
g&eacute;r&eacute;s par une autre infrastructure, sous r&eacute;serve qu'ils soient
enregistr&eacute;s au format binaire avec l'extension de nom de fichier
<em>.sct</em>.</p>
</usage>
</directivesynopsis>
</modulesynopsis>