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