1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head><!--
4        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
5              This file is generated from xml source: DO NOT EDIT
6        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7      -->
8<title>Chiffrement fort SSL/TLS : Mode d'emploi - Serveur Apache HTTP</title>
9<link href="/style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
10<link href="/style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
11<link href="/style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="/style/css/prettify.css" />
12<script src="/style/scripts/prettify.min.js" type="text/javascript">
13</script>
14
15<link href="/images/favicon.ico" rel="shortcut icon" /></head>
16<body id="manual-page"><div id="page-header">
17<p class="menu"><a href="/mod/">Modules</a> | <a href="/mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="/glossary.html">Glossaire</a> | <a href="/sitemap.html">Plan du site</a></p>
18<p class="apache">Serveur Apache HTTP Version 2.4</p>
19<img alt="" src="/images/feather.gif" /></div>
20<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="/images/left.gif" /></a></div>
21<div id="path">
22<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.4</a> &gt; <a href="./">SSL/TLS</a></div><div id="page-content"><div id="preamble"><h1>Chiffrement fort SSL/TLS : Mode d'emploi</h1>
23<div class="toplang">
24<p><span>Langues Disponibles: </span><a href="/en/ssl/ssl_howto.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
25<a href="/fr/ssl/ssl_howto.html" title="Fran�ais">&nbsp;fr&nbsp;</a></p>
26</div>
27
28
29<p>Ce document doit vous permettre de d�marrer et de faire fonctionner
30une configuration de base. Avant de vous lancer dans l'application de
31techniques avanc�es, il est fortement recommand� de lire le reste
32de la documentation SSL afin d'en comprendre le fonctionnement de
33mani�re plus approfondie.</p>
34</div>
35<div id="quickview"><ul id="toc"><li><img alt="" src="/images/down.gif" /> <a href="#configexample">Exemple de configuration basique</a></li>
36<li><img alt="" src="/images/down.gif" /> <a href="#ciphersuites">Suites de chiffrement et mise en application de la s�curit�
37de haut niveau</a></li>
38<li><img alt="" src="/images/down.gif" /> <a href="#strongurl">Comment cr�er un serveur qui accepte tous les types de
39chiffrement en g�n�ral, mais exige un chiffrement fort pour pouvoir
40acc�der � une URL particuli�re ?</a></li>
41<li><img alt="" src="/images/down.gif" /> <a href="#accesscontrol">Authentification du client et contr�le d'acc�s</a></li>
42<li><img alt="" src="/images/down.gif" /> <a href="#logging">Journalisation</a></li>
43</ul><ul class="seealso"><li><a href="#comments_section">Commentaires</a></li></ul></div>
44<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
45<div class="section">
46<h2><a name="configexample" id="configexample">Exemple de configuration basique</a></h2>
47
48
49<p>Votre configuration SSL doit comporter au moins les directives
50suivantes :</p>
51
52<pre class="prettyprint lang-config">LoadModule ssl_module modules/mod_ssl.so
53
54Listen 443
55&lt;VirtualHost *:443&gt;
56    ServerName www.example.com
57    SSLEngine on
58    SSLCertificateFile /path/to/www.example.com.cert
59    SSLCertificateKeyFile /path/to/www.example.com.key
60&lt;/VirtualHost&gt;</pre>
61
62
63</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
64<div class="section">
65<h2><a name="ciphersuites" id="ciphersuites">Suites de chiffrement et mise en application de la s�curit�
66de haut niveau</a></h2>
67
68<ul>
69<li><a href="#onlystrong">Comment cr�er un serveur SSL
70qui n'accepte que le chiffrement fort ?</a></li>
71<li><a href="#strongurl">Comment cr�er un serveur qui accepte tous les types de
72chiffrement en g�n�ral, mais exige un chiffrement fort pour pouvoir
73acc�der � une URL particuli�re ?</a></li>
74</ul>
75
76
77<h3><a name="onlystrong" id="onlystrong">Comment cr�er un serveur SSL qui n'accepte
78que le chiffrement fort ?</a></h3>
79
80    <p>Les directives suivantes ne permettent que les
81    chiffrements de plus haut niveau :</p>
82    <pre class="prettyprint lang-config">SSLCipherSuite HIGH:!aNULL:!MD5</pre>
83
84
85
86
87 <p>Avec la configuration qui suit, vous indiquez une pr�f�rence pour
88 des algorityhmes de chiffrement sp�cifiques optimis�s en mati�re de
89 rapidit� (le choix final sera op�r� par mod_ssl, dans la mesure ou le
90 client les supporte) :</p>
91
92    <pre class="prettyprint lang-config">SSLCipherSuite RC4-SHA:AES128-SHA:HIGH:!aNULL:!MD5
93SSLHonorCipherOrder on</pre>
94
95</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
96<div class="section">
97<h2><a name="strongurl" id="strongurl">Comment cr�er un serveur qui accepte tous les types de
98chiffrement en g�n�ral, mais exige un chiffrement fort pour pouvoir
99acc�der � une URL particuli�re ?</a></h2>
100
101    <p>Dans ce cas bien �videmment, une directive <code class="directive"><a href="/mod/mod_ssl.html#sslciphersuite">SSLCipherSuite</a></code> au niveau du serveur principal
102    qui restreint le choix des suites de chiffrement aux versions les plus
103    fortes ne conviendra pas. <code class="module"><a href="/mod/mod_ssl.html">mod_ssl</a></code> peut cependant �tre
104    reconfigur� au sein de blocs <code>Location</code> qui permettent
105    d'adapter la configuration g�n�rale � un r�pertoire sp�cifique ;
106    <code class="module"><a href="/mod/mod_ssl.html">mod_ssl</a></code> peut alors forcer automatiquement une
107    ren�gociation des param�tres SSL pour parvenir au but recherch�.
108    Cette configuration peut se pr�senter comme suit :</p>
109    <pre class="prettyprint lang-config"># soyons tr�s tol�rant a priori
110SSLCipherSuite ALL:!aNULL:RC4+RSA:+HIGH:+MEDIUM:+LOW:+EXP:+eNULL
111
112&lt;Location /strong/area&gt;
113# sauf pour https://hostname/strong/area/ et ses sous-r�pertoires
114# qui exigent des chiffrements forts
115SSLCipherSuite HIGH:!aNULL:!MD5
116&lt;/Location&gt;</pre>
117
118</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
119<div class="section">
120<h2><a name="accesscontrol" id="accesscontrol">Authentification du client et contr�le d'acc�s</a></h2>
121
122<ul>
123<li><a href="#allclients">Comment forcer les clients
124� s'authentifier � l'aide de certificats ?</a></li>
125<li><a href="#arbitraryclients">Comment forcer les clients
126� s'authentifier � l'aide de certificats pour une URL particuli�re,
127mais autoriser quand-m�me tout client anonyme
128� acc�der au reste du serveur ?</a></li>
129<li><a href="#certauthenticate">Comment n'autoriser l'acc�s � une URL
130particuli�re qu'aux clients qui poss�dent des certificats, mais autoriser
131l'acc�s au reste du serveur � tous les clients ?</a></li>
132<li><a href="#intranet">Comment imposer HTTPS avec chiffrements forts,
133et soit authentification de base, soit possession de certificats clients,
134pour l'acc�s � une partie de l'Intranet, pour les clients en
135provenance de l'Internet ?</a></li>
136</ul>
137
138<h3><a name="allclients" id="allclients">Comment forcer les clients
139� s'authentifier � l'aide de certificats ?
140</a></h3>
141
142
143    <p>Lorsque vous connaissez tous vos clients (comme c'est en g�n�ral le cas
144    au sein d'un intranet d'entreprise), vous pouvez imposer une
145    authentification bas�e uniquement sur les certificats. Tout ce dont vous
146    avez besoin pour y parvenir est de cr�er des certificats clients sign�s par
147    le certificat de votre propre autorit� de certification
148    (<code>ca.crt</code>), et d'authentifier les clients � l'aide de ces
149    certificats.</p>
150    <pre class="prettyprint lang-config"># exige un certificat client sign� par le certificat de votre CA
151# contenu dans ca.crt
152SSLVerifyClient require
153SSLVerifyDepth 1
154SSLCACertificateFile conf/ssl.crt/ca.crt</pre>
155
156
157
158<h3><a name="arbitraryclients" id="arbitraryclients">Comment forcer les clients
159� s'authentifier � l'aide de certificats pour une URL particuli�re,
160mais autoriser quand-m�me tout client anonyme
161� acc�der au reste du serveur ?</a></h3>
162
163
164<p>Pour forcer les clients � s'authentifier � l'aide de certificats pour une
165URL particuli�re, vous pouvez utiliser les fonctionnalit�s de reconfiguration
166de <code class="module"><a href="/mod/mod_ssl.html">mod_ssl</a></code> en fonction du r�pertoire :</p>
167
168    <pre class="prettyprint lang-config">SSLVerifyClient none
169SSLCACertificateFile conf/ssl.crt/ca.crt
170
171&lt;Location /secure/area&gt;
172SSLVerifyClient require
173SSLVerifyDepth 1
174&lt;/Location&gt;</pre>
175
176
177
178<h3><a name="certauthenticate" id="certauthenticate">Comment n'autoriser l'acc�s � une URL
179particuli�re qu'aux clients qui poss�dent des certificats, mais autoriser
180l'acc�s au reste du serveur � tous les clients ?</a></h3>
181
182
183    <p>La cl� du probl�me consiste � v�rifier si une partie du certificat
184    client correspond � ce que vous attendez. Cela signifie en g�n�ral
185    consulter tout ou partie du nom distinctif (DN), afin de v�rifier s'il
186    contient une cha�ne connue. Il existe deux m�thodes pour y parvenir ;
187    on utilise soit le module <code class="module"><a href="/mod/mod_auth_basic.html">mod_auth_basic</a></code>, soit la
188    directive <code class="directive"><a href="/mod/mod_ssl.html#sslrequire">SSLRequire</a></code>.</p>
189
190    <p>La m�thode du module <code class="module"><a href="/mod/mod_auth_basic.html">mod_auth_basic</a></code> est en g�n�ral
191    incontournable lorsque les certificats ont un contenu arbitraire, ou
192    lorsque leur DN ne contient aucun champ connu
193    (comme l'organisation, etc...). Dans ce cas, vous devez construire une base
194    de donn�es de mots de passe contenant <em>tous</em> les clients
195    autoris�s, comme suit :</p>
196
197    <pre class="prettyprint lang-config">SSLVerifyClient      none
198SSLCACertificateFile conf/ssl.crt/ca.crt
199SSLCACertificatePath conf/ssl.crt
200
201&lt;Directory /usr/local/apache2/htdocs/secure/area&gt;
202SSLVerifyClient      require
203    SSLVerifyDepth       5
204    SSLOptions           +FakeBasicAuth
205    SSLRequireSSL
206    AuthName             "Snake Oil Authentication"
207    AuthType             Basic
208    AuthBasicProvider    file
209    AuthUserFile         /usr/local/apache2/conf/httpd.passwd
210    Require              valid-user
211&lt;/Directory&gt;</pre>
212
213    
214
215    <p>Le mot de passe utilis� dans cet exemple correspond � la cha�ne de
216    caract�res "password" chiffr�e en DES. Voir la documentation de la
217    directive <code class="directive"><a href="/mod/mod_ssl.html#ssloptions">SSLOptions</a></code> pour
218    plus de d�tails.</p>
219
220    <div class="example"><h3>httpd.passwd</h3><pre>/C=DE/L=Munich/O=Snake Oil, Ltd./OU=Staff/CN=Foo:xxj31ZMTZzkVA
221/C=US/L=S.F./O=Snake Oil, Ltd./OU=CA/CN=Bar:xxj31ZMTZzkVA
222/C=US/L=L.A./O=Snake Oil, Ltd./OU=Dev/CN=Quux:xxj31ZMTZzkVA</pre></div>
223
224    <p>Lorsque vos clients font tous partie d'une m�me hi�rarchie, ce qui
225    appara�t dans le DN, vous pouvez les authentifier plus facilement en
226    utilisant la directive <code class="directive"><a href="/mod/mod_ssl.html#sslrequire">SSLRequire</a></code>, comme suit :</p>
227
228
229    <pre class="prettyprint lang-config">SSLVerifyClient      none
230SSLCACertificateFile conf/ssl.crt/ca.crt
231SSLCACertificatePath conf/ssl.crt
232
233&lt;Directory /usr/local/apache2/htdocs/secure/area&gt;
234  SSLVerifyClient      require
235  SSLVerifyDepth       5
236  SSLOptions           +FakeBasicAuth
237  SSLRequireSSL
238  SSLRequire       %{SSL_CLIENT_S_DN_O}  eq "Snake Oil, Ltd." \
239               and %{SSL_CLIENT_S_DN_OU} in {"Staff", "CA", "Dev"}
240&lt;/Directory&gt;</pre>
241
242
243
244<h3><a name="intranet" id="intranet">Comment imposer HTTPS avec chiffrements forts,
245et soit authentification de base, soit possession de certificats clients,
246pour l'acc�s � une partie de l'Intranet, pour les clients en
247provenance de l'Internet ? Je souhaite quand-m�me autoriser l'acc�s en HTTP
248aux clients de l'intranet.</a></h3>
249
250
251   <p>On suppose dans ces exemples que les clients de l'intranet ont des
252   adresses IP dans la gamme 192.168.1.0/24, et que la partie de l'intranet
253   � laquelle vous voulez autoriser l'acc�s depuis l'Internet est
254   <code>/usr/local/apache2/htdocs/subarea</code>. Ces lignes de configuration
255   doivent se trouver en dehors de votre h�te virtuel HTTPS, afin qu'elles
256   s'appliquent � la fois � HTTP et HTTPS.</p>
257
258    <pre class="prettyprint lang-config">SSLCACertificateFile conf/ssl.crt/company-ca.crt
259
260&lt;Directory /usr/local/apache2/htdocs&gt;
261#   En dehors de subarea, seul l'acc�s depuis l'intranet est
262#   autoris�
263    Require              ip 192.168.1.0/24
264&lt;/Directory&gt;
265
266&lt;Directory /usr/local/apache2/htdocs/subarea&gt;
267#   Dans subarea, tout acc�s depuis l'intranet est autoris�
268#   mais depuis l'Internet, seul l'acc�s par HTTPS + chiffrement fort + Mot de passe
269#   ou HTTPS + chiffrement fort + certificat client n'est autoris�.
270
271#   Si HTTPS est utilis�, on s'assure que le niveau de chiffrement est fort.
272#   Autorise en plus les certificats clients comme une alternative �
273#   l'authentification basique.
274    SSLVerifyClient      optional
275    SSLVerifyDepth       1
276    SSLOptions           +FakeBasicAuth +StrictRequire
277    SSLRequire           %{SSL_CIPHER_USEKEYSIZE} &gt;= 128
278    
279    #   ON oblige les clients venant d'Internet � utiliser HTTPS
280    RewriteEngine        on
281    RewriteCond          %{REMOTE_ADDR} !^192\.168\.1\.[0-9]+$
282    RewriteCond          %{HTTPS} !=on
283    RewriteRule          . - [F]
284    
285    #   On permet l'acc�s soit sur les crit�res r�seaux, soit par authentification Basique
286    Satisfy              any
287    
288    #   Contr�le d'acc�s r�seau
289    Require              ip 192.168.1.0/24
290    
291    #   Configuration de l'authentification HTTP Basique
292    AuthType             basic
293    AuthName             "Protected Intranet Area"
294    AuthBasicProvider    file
295    AuthUserFile         conf/protected.passwd
296    Require              valid-user
297&lt;/Directory&gt;</pre>
298
299
300</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
301<div class="section">
302<h2><a name="logging" id="logging">Journalisation</a></h2>
303    
304
305    <p><code class="module"><a href="/mod/mod_ssl.html">mod_ssl</a></code> peut enregistrer des informations de
306    d�bogage tr�s verbeuses dans le journal des erreurs, lorsque sa
307    directive <code class="directive"><a href="/mod/core.html#loglevel">LogLevel</a></code> est d�finie
308    � des niveaux de trace �lev�s. Par contre, sur un serveur tr�s
309    sollicit�, le niveau <code>info</code> sera probablement d�j� trop
310    �lev�. Souvenez-vous que vous pouvez configurer la directive
311    <code class="directive"><a href="/mod/core.html#loglevel">LogLevel</a></code> par module afin de
312    pourvoir � vos besoins.</p>
313</div></div>
314<div class="bottomlang">
315<p><span>Langues Disponibles: </span><a href="/en/ssl/ssl_howto.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
316<a href="/fr/ssl/ssl_howto.html" title="Fran�ais">&nbsp;fr&nbsp;</a></p>
317</div><div class="top"><a href="#page-header"><img src="/images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Commentaires</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&amp;A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
318<script type="text/javascript"><!--//--><![CDATA[//><!--
319var comments_shortname = 'httpd';
320var comments_identifier = 'http://httpd.apache.org/docs/2.4/ssl/ssl_howto.html';
321(function(w, d) {
322    if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
323        d.write('<div id="comments_thread"><\/div>');
324        var s = d.createElement('script');
325        s.type = 'text/javascript';
326        s.async = true;
327        s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
328        (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
329    }
330    else { 
331        d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
332    }
333})(window, document);
334//--><!]]></script></div><div id="footer">
335<p class="apache">Copyright 2014 The Apache Software Foundation.<br />Autoris� sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
336<p class="menu"><a href="/mod/">Modules</a> | <a href="/mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="/glossary.html">Glossaire</a> | <a href="/sitemap.html">Plan du site</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
337if (typeof(prettyPrint) !== 'undefined') {
338    prettyPrint();
339}
340//--><!]]></script>
341</body></html>