003 File Manager
Current Path:
/usr/local/share/doc/apache24/ssl
usr
/
local
/
share
/
doc
/
apache24
/
ssl
/
đ
..
đ
index.html
(462 B)
đ
index.html.en
(4.96 KB)
đ
index.html.fr.utf8
(5.12 KB)
đ
index.html.ja.utf8
(5.18 KB)
đ
index.html.tr.utf8
(5.11 KB)
đ
index.html.zh-cn.utf8
(4.96 KB)
đ
ssl_compat.html
(211 B)
đ
ssl_compat.html.en
(21.24 KB)
đ
ssl_compat.html.fr.utf8
(22.11 KB)
đ
ssl_faq.html
(205 B)
đ
ssl_faq.html.en
(48.78 KB)
đ
ssl_faq.html.fr.utf8
(55.35 KB)
đ
ssl_howto.html
(209 B)
đ
ssl_howto.html.en
(22.57 KB)
đ
ssl_howto.html.fr.utf8
(25.02 KB)
đ
ssl_intro.html
(298 B)
đ
ssl_intro.html.en
(34.75 KB)
đ
ssl_intro.html.fr.utf8
(39.6 KB)
đ
ssl_intro.html.ja.utf8
(40.69 KB)
Editing: ssl_faq.html.fr.utf8
<?xml version="1.0" encoding="UTF-8"?> <!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> <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /> <!-- XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX This file is generated from xml source: DO NOT EDIT XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX --> <title>Chiffrement SSL/TLS fort: foire aux questions - Serveur HTTP Apache 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 HTTP Apache Version 2.4</p> <img alt="" src="../images/feather.png" /></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 SSL/TLS fort: foire aux questions</h1> <div class="toplang"> <p><span>Langues Disponibles: </span><a href="../en/ssl/ssl_faq.html" hreflang="en" rel="alternate" title="English"> en </a> | <a href="../fr/ssl/ssl_faq.html" title="Français"> fr </a></p> </div> <blockquote> <p>Le sage n'apporte pas de bonnes rĂ©ponses, il pose les bonnes questions</p> <p class="cite">-- <cite>Claude Levi-Strauss</cite></p> </blockquote> </div> <div id="quickview"><a href="https://www.apache.org/foundation/contributing.html" class="badge"><img src="https://www.apache.org/images/SupportApache-small.png" alt="Support Apache!" /></a><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#installation">Installation</a></li> <li><img alt="" src="../images/down.gif" /> <a href="#aboutconfig">Configuration</a></li> <li><img alt="" src="../images/down.gif" /> <a href="#aboutcerts">Certificats</a></li> <li><img alt="" src="../images/down.gif" /> <a href="#aboutssl">Le protocole SSL</a></li> <li><img alt="" src="../images/down.gif" /> <a href="#support">Support de mod_ssl</a></li> </ul><h3>Voir aussi</h3><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="installation" id="installation">Installation</a></h2> <ul> <li><a href="#mutex">Pourquoi le dĂ©marrage d'Apache provoque-t-il des erreurs de permission en rapport avec SSLMutex ?</a></li> <li><a href="#entropy">Pourquoi mod_ssl s'arrĂȘte-t-il avec l'erreur "Failed to generate temporary 512 bit RSA private key" au dĂ©marrage d'Apache ?</a></li> </ul> <h3><a name="mutex" id="mutex">Pourquoi le dĂ©marrage d'Apache provoque-t-il des erreurs de permission en rapport avec SSLMutex ?</a></h3> <p>Des erreurs telles que ``<code>mod_ssl: Child could not open SSLMutex lockfile /opt/apache/logs/ssl_mutex.18332 (avec l'erreur systĂšme qui suit) [...] System: Permission denied (errno: 13)</code>'' sont souvent provoquĂ©es par des permissions trop restrictives sur les rĂ©pertoires <em>parents</em>. Assurez-vous que tous les rĂ©pertoires parents (ici <code>/opt</code>, <code>/opt/apache</code> et <code>/opt/apache/logs</code>) ont le bit x positionnĂ© au moins pour l'UID sous lequel les processus enfants d'Apache s'exĂ©cutent (voir la directive <code class="directive"><a href="../mod/mod_unixd.html#user">User</a></code>).</p> <h3><a name="entropy" id="entropy">Pourquoi mod_ssl s'arrĂȘte-t-il avec l'erreur "Failed to generate temporary 512 bit RSA private key" au dĂ©marrage d'Apache ?</a></h3> <p>Pour fonctionner correctement, les logiciels de cryptographie ont besoin d'une source de donnĂ©es alĂ©atoires. De nombreux systĂšmes d'exploitation libres proposent un "pĂ©riphĂ©rique source d'entropie" qui fournit ce service (il se nomme en gĂ©nĂ©ral <code>/dev/random</code>). Sur d'autres systĂšmes, les applications doivent amorcer manuellement le GĂ©nĂ©rateur de Nombres Pseudo-AlĂ©atoires d'OpenSSL (Pseudo Random Number Generator -PRNG) Ă l'aide de donnĂ©es appropriĂ©es avant de gĂ©nĂ©rer des clĂ©s ou d'effectuer un chiffrement Ă clĂ© publique. Depuis la version 0.9.5, les fonctions d'OpenSSL qui nĂ©cessitent des donnĂ©es alĂ©atoires provoquent une erreur si le PRNG n'a pas Ă©tĂ© amorcĂ© avec une source de donnĂ©es alĂ©atoires d'au moins 128 bits.</p> <p>Pour Ă©viter cette erreur, <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> doit fournir suffisamment d'entropie au PRNG pour lui permettre de fonctionner correctement. Ce niveau d'entropie est dĂ©fini par la directive <code class="directive"><a href="../mod/mod_ssl.html#sslrandomseed">SSLRandomSeed</a></code>.</p> </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> <div class="section"> <h2><a name="aboutconfig" id="aboutconfig">Configuration</a></h2> <ul> <li><a href="#parallel">Peut-on faire cohabiter HTTP et HTTPS sur le mĂȘme serveur ?</a></li> <li><a href="#ports">Quel port HTTPS utilise-t-il ?</a></li> <li><a href="#httpstest">Comment s'exprimer en langage HTTPS Ă des fins de test ?</a></li> <li><a href="#hang">Pourquoi la communication se bloque-t-elle lorsque je me connecte Ă mon serveur Apache configurĂ© pour SSL ?</a></li> <li><a href="#refused">Pourquoi, lorsque je tente d'accĂ©der en HTTPS Ă mon serveur Apache+mod_ssl fraĂźchement installĂ©, l'erreur ``Connection Refused'' s'affiche-t-elle ?</a></li> <li><a href="#envvars">Pourquoi les variables <code>SSL_XXX</code> ne sont-elles pas disponibles dans mes scripts CGI et SSI ?</a></li> <li><a href="#relative">Comment puis-je basculer entre les protocoles HTTP et HTTPS dans les hyperliens relatifs ?</a></li> </ul> <h3><a name="parallel" id="parallel">Peut-on faire cohabiter HTTP et HTTPS sur le mĂȘme serveur ?</a></h3> <p>Oui. HTTP et HTTPS utilisent des ports diffĂ©rents (HTTP Ă©coute le port 80 et HTTPS le port 443), si bien qu'il n'y a pas de conflit direct entre les deux. Vous pouvez soit exĂ©cuter deux instances sĂ©parĂ©es du serveur, chacune d'entre elles Ă©coutant l'un de ces ports, soit utiliser l'Ă©lĂ©gante fonctionnalitĂ© d'Apache que constituent les hĂŽtes virtuels pour crĂ©er deux serveurs virtuels gĂ©rĂ©s par la mĂȘme instance d'Apache - le premier serveur rĂ©pondant en HTTP aux requĂȘtes sur le port 80, le second rĂ©pondant en HTTPS aux requĂȘtes sur le port 443.</p> <h3><a name="ports" id="ports">Quel port HTTPS utilise-t-il ?</a></h3> <p>Vous pouvez associer le protocole HTTPS Ă n'importe quel port, mais le port standard est le port 443, que tout navigateur compatible HTTPS va utiliser par dĂ©faut. Vous pouvez forcer votre navigateur Ă utiliser un port diffĂ©rent en le prĂ©cisant dans l'URL. Par exemple, si votre serveur est configurĂ© pour servir des pages en HTTPS sur le port 8080, vous pourrez y accĂ©der par l'adresse <code>https://example.com:8080/</code>.</p> <h3><a name="httpstest" id="httpstest">Comment s'exprimer en langage HTTPS Ă des fins de test ?</a></h3> <p>Alors que vous utilisez simplement</p> <div class="example"><p><code>$ telnet localhost 80<br /> GET / HTTP/1.0</code></p></div> <p>pour tester facilement Apache via HTTP, les choses ne sont pas si simples pour HTTPS Ă cause du protocole SSL situĂ© entre TCP et HTTP. La commande OpenSSL <code>s_client</code> vous permet cependant d'effectuer un test similaire via HTTPS :</p> <div class="example"><p><code>$ openssl s_client -connect localhost:443 -state -debug<br /> GET / HTTP/1.0</code></p></div> <p>Avant la vĂ©ritable rĂ©ponse HTTP, vous recevrez des informations dĂ©taillĂ©es Ă propos de l'Ă©tablissement de la connexion SSL. Si vous recherchez un client en ligne de commande Ă usage plus gĂ©nĂ©ral qui comprend directement HTTP et HTTPS, qui peut effectuer des opĂ©rations GET et POST, peut utiliser un mandataire, supporte les requĂȘtes portant sur une partie d'un fichier (byte-range), etc..., vous devriez vous tourner vers l'excellent outil <a href="http://curl.haxx.se/">cURL</a>. GrĂące Ă lui, vous pouvez vĂ©rifier si Apache rĂ©pond correctement aux requĂȘtes via HTTP et HTTPS comme suit :</p> <div class="example"><p><code>$ curl http://localhost/<br /> $ curl https://localhost/</code></p></div> <h3><a name="hang" id="hang">Pourquoi la communication se bloque-t-elle lorsque je me connecte Ă mon serveur Apache configurĂ© pour SSL ?</a></h3> <p>Ceci peut arriver si vous vous connectez Ă un serveur HTTPS (ou Ă un serveur virtuel) via HTTP (par exemple, en utilisant <code>http://example.com/</code> au lieu de <code>https://example.com</code>). Cela peut aussi arriver en essayant de vous connecter via HTTPS Ă un serveur HTTP (par exemple, en utilisant <code>https://example.com/</code> avec un serveur qui ne supporte pas HTTPS, ou le supporte, mais sur un port non standard). Assurez-vous que vous vous connectez bien Ă un serveur (virtuel) qui supporte SSL.</p> <h3><a name="refused" id="refused">Pourquoi, lorsque je tente d'accĂ©der en HTTPS Ă mon serveur Apache+mod_ssl fraĂźchement installĂ©, l'erreur ``Connection Refused'' s'affiche-t-elle ?</a></h3> <p>Une configuration incorrecte peut provoquer ce type d'erreur. Assurez-vous que vos directives <code class="directive"><a href="../mod/mpm_common.html#listen">Listen</a></code> s'accordent avec vos directives <code class="directive"><a href="../mod/core.html#virtualhost"><VirtualHost></a></code>. Si l'erreur persiste, recommencez depuis le dĂ©but en restaurant la configuration par dĂ©faut fournie par<code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code>.</p> <h3><a name="envvars" id="envvars">Pourquoi les variables <code>SSL_XXX</code> ne sont-elles pas disponibles dans mes scripts CGI et SSI ?</a></h3> <p>Assurez-vous que la directive ``<code>SSLOptions +StdEnvVars</code>'' est bien prĂ©sente dans le contexte de vos requĂȘtes CGI/SSI.</p> <h3><a name="relative" id="relative">Comment puis-je basculer entre les protocoles HTTP et HTTPS dans les hyperliens relatifs ?</a></h3> <p>Normalement, pour basculer entre HTTP et HTTPS, vous devez utiliser des hyperliens pleinement qualifiĂ©s (car vous devez modifier le schĂ©ma de l'URL). Cependant, Ă l'aide du module <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>, vous pouvez manipuler des hyperliens relatifs, pour obtenir le mĂȘme effet.</p> <pre class="prettyprint lang-config">RewriteEngine on RewriteRule "^/(.*)_SSL$" "https://%{SERVER_NAME}/$1" [R,L] RewriteRule "^/(.*)_NOSSL$" "http://%{SERVER_NAME}/$1" [R,L]</pre> <p>Ce jeu de rĂšgles rewrite vous permet d'utiliser des hyperliens de la forme <code><a href="document.html_SSL"></code> pour passer en HTTPS dans les liens relatifs. (Remplacez SSL par NOSSL pour passer en HTTP.)</p> </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> <div class="section"> <h2><a name="aboutcerts" id="aboutcerts">Certificats</a></h2> <ul> <li><a href="#keyscerts">Qu'est-ce qu'un clĂ© privĂ©e RSA, un certificat, une demande de signature de certificat (CSR) ?</a></li> <li><a href="#startup">Y a-t-il une diffĂ©rence au dĂ©marrage entre un serveur Apache non SSL et un serveur Apache supportant SSL ?</a></li> <li><a href="#selfcert">Comment crĂ©er un certificat auto-signĂ© SSL Ă des fins de test ?</a></li> <li><a href="#realcert">Comment crĂ©er un vrai certificat SSL ?</a></li> <li><a href="#ownca">Comment crĂ©er et utiliser sa propre AutoritĂ© de certification (CA) ?</a></li> <li><a href="#passphrase">Comment modifier le mot de passe de ma clĂ© privĂ©e ?</a></li> <li><a href="#removepassphrase">Comment dĂ©marrer Apache sans avoir Ă entrer de mot de passe ?</a></li> <li><a href="#verify">Comment vĂ©rifier si une clĂ© privĂ©e correspond bien Ă son certificat ?</a></li> <li><a href="#pemder">Comment convertir un certificat du format PEM au format DER ?</a></li> <li><a href="#gid">Pourquoi les navigateurs se plaignent-ils de ne pas pouvoir vĂ©rifier mon certificat de serveur ?</a></li> </ul> <h3><a name="keyscerts" id="keyscerts">Qu'est-ce qu'un clĂ© privĂ©e RSA, un certificat, une demande de signature de certificat (CSR) ?</a></h3> <p>Un fichier de clĂ© privĂ©e RSA est un fichier numĂ©rique que vous pouvez utiliser pour dĂ©chiffrer des messages que l'on vous a envoyĂ©s. Il a son pendant Ă caractĂšre public que vous pouvez distribuer (par le biais de votre certificat), ce qui permet aux utilisateurs de chiffrer les messages qu'ils vous envoient.</p> <p>Une Demande de Signature de Certificat (CSR) est un fichier numĂ©rique qui contient votre clĂ© publique et votre nom. La CSR doit ĂȘtre envoyĂ©e Ă une AutoritĂ© de Certification (CA), qui va la convertir en vrai certificat en la signant.</p> <p>Un certificat contient votre clĂ© publique RSA, votre nom, le nom de la CA, et est signĂ© numĂ©riquement par cette derniĂšre. Les navigateurs qui reconnaissent la CA peuvent vĂ©rifier la signature du certificat, et ainsi en extraire votre clĂ© publique RSA. Ceci leur permet de vous envoyer des messages chiffrĂ©s que vous seul pourrez dĂ©chiffrer.</p> <p>Se rĂ©fĂ©rer au chapitre <a href="ssl_intro.html">Introduction</a> pour une description gĂ©nĂ©rale du protocole SSL.</p> <h3><a name="startup" id="startup">Y a-t-il une diffĂ©rence au dĂ©marrage entre un serveur Apache non SSL et un serveur Apache supportant SSL ?</a></h3> <p>Oui. En gĂ©nĂ©ral, avec ou sans <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> intĂ©grĂ©, le dĂ©marrage d'Apache ne prĂ©sente pas de diffĂ©rences. Cependant, si votre fichier de clĂ© privĂ©e SSL possĂšde un mot de passe, vous devrez le taper au dĂ©marrage d'Apache.</p> <p>Devoir entrer manuellement le mot de passe au dĂ©marrage du serveur peut poser quelques problĂšmes - par exemple, quand le serveur est dĂ©marrĂ© au moyen de scripts au lancement du systĂšme. Dans ce cas, vous pouvez suivre les Ă©tapes <a href="#removepassphrase">ci-dessous</a> pour supprimer le mot de passe de votre clĂ© privĂ©e. Gardez Ă l'esprit qu'agir ainsi augmente les risques de sĂ©curitĂ© - agissez avec prĂ©caution !</p> <h3><a name="selfcert" id="selfcert">Comment crĂ©er un certificat auto-signĂ© SSL Ă des fins de test ?</a></h3> <ol> <li>VĂ©rifiez qu'OpenSSL est installĂ© et l'exĂ©cutable openssl dans votre <code>PATH</code>.<br /> <br /> </li> <li>ExĂ©cuter la commande suivante pour crĂ©er les fichiers <code>server.key</code> et <code>server.crt</code> :<br /> <code><strong>$ openssl req -new -x509 -nodes -out server.crt -keyout server.key</strong></code><br /> Ces fichiers seront utilisĂ©s comme suit dans votre <code>httpd.conf</code> : <pre class="prettyprint lang-config">SSLCertificateFile "/path/to/this/server.crt" SSLCertificateKeyFile "/path/to/this/server.key"</pre> </li> <li>Il est important de savoir que le fichier <code>server.key</code> n'a <em>pas</em> de mot de passe. Pour ajouter un mot de passe Ă la clĂ©, vous devez exĂ©cuter la commande suivante et confirmer le mot de passe comme demandĂ©.<br /> <p><code><strong>$ openssl rsa -des3 -in server.key -out server.key.new</strong></code><br /> <code><strong>$ mv server.key.new server.key</strong></code><br /></p> Sauvegardez le fichier <code>server.key</code> ainsi que son mot de passe en lieu sĂ»r. </li> </ol> <h3><a name="realcert" id="realcert">Comment crĂ©er un vrai certificat SSL ?</a></h3> <p>Voici la marche Ă suivre pas Ă pas :</p> <ol> <li>Assurez-vous qu'OpenSSL est bien installĂ© et dans votre <code>PATH</code>. <br /> <br /> </li> <li>CrĂ©ez une clĂ© privĂ©e RSA pour votre serveur Apache (elle sera au format PEM et chiffrĂ©e en Triple-DES):<br /> <br /> <code><strong>$ openssl genrsa -des3 -out server.key 2048</strong></code><br /> <br /> Enregistrez le fichier <code>server.key</code> et le mot de passe Ă©ventuellement dĂ©fini en lieu sĂ»r. Vous pouvez afficher les dĂ©tails de cette clĂ© privĂ©e RSA Ă l'aide de la commande :<br /> <br /> <code><strong>$ openssl rsa -noout -text -in server.key</strong></code><br /> <br /> Si nĂ©cessaire, vous pouvez aussi crĂ©er une version PEM non chiffrĂ©e (non recommandĂ©) de clĂ© privĂ©e RSA avec :<br /> <br /> <code><strong>$ openssl rsa -in server.key -out server.key.unsecure</strong></code><br /> <br /> </li> <li>CrĂ©ez une Demande de signature de Certificat (CSR) Ă l'aide de la clĂ© privĂ©e prĂ©cĂ©demment gĂ©nĂ©rĂ©e (la sortie sera au format PEM):<br /> <br /> <code><strong>$ openssl req -new -key server.key -out server.csr</strong></code><br /> <br /> Vous devez entrer le Nom de Domaine Pleinement QualifiĂ© ("Fully Qualified Domain Name" ou FQDN) de votre serveur lorsqu'OpenSSL vous demande le "CommonName", c'est Ă dire que si vous gĂ©nĂ©rez une CSR pour un site web auquel on accĂšdera par l'URL <code>https://www.foo.dom/</code>, le FQDN sera "www.foo.dom". Vous pouvez afficher les dĂ©tails de ce CSR avec :<br /> <br /> <code><strong>$ openssl req -noout -text -in server.csr</strong></code><br /> <br /> </li> <li>Vous devez maintenant envoyer la CSR Ă une AutoritĂ© de Certification (CA), afin que cette derniĂšre puisse la signer. Une fois la CSR signĂ©e, vous disposerez d'un vĂ©ritable certificat que vous pourrez utiliser avec Apache. Vous pouvez faire signer votre CSR par une CA commerciale ou par votre propre CA.<br /> Les CAs commerciales vous demandent en gĂ©nĂ©ral de leur envoyer la CSR par l'intermĂ©diaire d'un formulaire web, de rĂ©gler le montant de la signature, puis vous envoient un certificat signĂ© que vous pouvez enregistrer dans un fichier server.crt. Pour plus de dĂ©tails sur la maniĂšre de crĂ©er sa propre CA, et de l'utiliser pour signer une CSR, voir <a href="#ownca">ci-dessous</a>.<br /> Une fois la CSR signĂ©e, vous pouvez afficher les dĂ©tails du certificat comme suit :<br /> <br /> <code><strong>$ openssl x509 -noout -text -in server.crt</strong></code><br /> </li> <li>Vous devez maintenant disposer de deux fichiers : <code>server.key</code> et <code>server.crt</code>. Ils sont prĂ©cisĂ©s dans votre fichier <code>httpd.conf</code> comme suit : <pre class="prettyprint lang-config">SSLCertificateFile "/path/to/this/server.crt" SSLCertificateKeyFile "/path/to/this/server.key"</pre> Le fichier <code>server.csr</code> n'est plus nĂ©cessaire. </li> </ol> <h3><a name="ownca" id="ownca">Comment crĂ©er et utiliser sa propre AutoritĂ© de certification (CA) ?</a></h3> <p>La solution la plus simple consiste Ă utiliser les scripts <code>CA.sh</code> ou <code>CA.pl</code> fournis avec OpenSSL. De prĂ©fĂ©rence, utilisez cette solution, Ă moins que vous ayez de bonnes raisons de ne pas le faire. Dans ce dernier cas, vous pouvez crĂ©er un certificat auto-signĂ© comme suit :</p> <ol> <li>CrĂ©ez une clĂ© privĂ©e RSA pour votre serveur (elle sera au format PEM et chiffrĂ©e en Triple-DES) :<br /> <br /> <code><strong>$ openssl genrsa -des3 -out server.key 2048</strong></code><br /> <br /> Sauvegardez le fichier <code>server.key</code> et le mot de passe Ă©ventuellement dĂ©fini en lieu sĂ»r. Vous pouvez afficher les dĂ©tails de cette clĂ© privĂ©e RSA Ă l'aide de la commande :<br /> <br /> <code><strong>$ openssl rsa -noout -text -in server.key</strong></code><br /> <br /> Si nĂ©cessaire, vous pouvez aussi crĂ©er une version PEM non chiffrĂ©e (non recommandĂ©) de cette clĂ© privĂ©e RSA avec :<br /> <br /> <code><strong>$ openssl rsa -in server.key -out server.key.unsecure</strong></code><br /> <br /> </li> <li>CrĂ©ez un certificat auto-signĂ© (structure X509) Ă l'aide de la clĂ© RSA que vous venez de gĂ©nĂ©rer (la sortie sera au format PEM) :<br /> <br /> <code><strong>$ openssl req -new -x509 -nodes -sha1 -days 365 -key server.key -out server.crt -extensions usr_cert</strong></code><br /> <br /> Cette commande signe le certificat du serveur et produit un fichier <code>server.crt</code>. Vous pouvez afficher les dĂ©tails de ce certificat avec :<br /> <br /> <code><strong>$ openssl x509 -noout -text -in server.crt</strong></code><br /> <br /> </li> </ol> <h3><a name="passphrase" id="passphrase">Comment modifier le mot de passe de ma clĂ© privĂ©e ?</a></h3> <p>Vous devez simplement lire la clĂ© avec l'ancien mot de passe et la réécrire en spĂ©cifiant le nouveau mot de passe. Pour cela, vous pouvez utiliser les commandes suivantes :</p> <p><code><strong>$ openssl rsa -des3 -in server.key -out server.key.new</strong></code><br /> <code><strong>$ mv server.key.new server.key</strong></code><br /></p> <p>La premiĂšre fois qu'il vous est demandĂ© un mot de passe PEM, vous devez entrer l'ancien mot de passe. Ensuite, on vous demandera d'entrer encore un mot de passe - cette fois, entrez le nouveau mot de passe. Si on vous demande de vĂ©rifier le mot de passe, vous devrez entrer le nouveau mot de passe une seconde fois.</p> <h3><a name="removepassphrase" id="removepassphrase">Comment dĂ©marrer Apache sans avoir Ă entrer de mot de passe ?</a></h3> <p>L'apparition de ce dialogue au dĂ©marrage et Ă chaque redĂ©marrage provient du fait que la clĂ© privĂ©e RSA contenue dans votre fichier server.key est enregistrĂ©e sous forme chiffrĂ©e pour des raisons de sĂ©curitĂ©. Le dĂ©chiffrement de ce fichier nĂ©cessite un mot de passe, afin de pouvoir ĂȘtre lu et interprĂ©tĂ©. Cependant, La suppression du mot de passe diminue le niveau de sĂ©curitĂ© du serveur - agissez avec prĂ©cautions !</p> <ol> <li>Supprimer le chiffrement de la clĂ© privĂ©e RSA (tout en conservant une copie de sauvegarde du fichier original) :<br /> <br /> <code><strong>$ cp server.key server.key.org</strong></code><br /> <code><strong>$ openssl rsa -in server.key.org -out server.key</strong></code><br /> <br /> </li> <li>Assurez-vous que le fichier server.key n'est lisible que par root :<br /> <br /> <code><strong>$ chmod 400 server.key</strong></code><br /> <br /> </li> </ol> <p>Maintenant, <code>server.key</code> contient une copie non chiffrĂ©e de la clĂ©. Si vous utilisez ce fichier pour votre serveur, il ne vous demandera plus de mot de passe. CEPENDANT, si quelqu'un arrive Ă obtenir cette clĂ©, il sera en mesure d'usurper votre identitĂ© sur le rĂ©seau. Vous DEVEZ par consĂ©quent vous assurer que seuls root ou le serveur web peuvent lire ce fichier (de prĂ©fĂ©rence, dĂ©marrez le serveur web sous root et faites le s'exĂ©cuter sous un autre utilisateur, en n'autorisant la lecture de la clĂ© que par root).</p> <p>Une autre alternative consiste Ă utiliser la directive ``<code>SSLPassPhraseDialog exec:/chemin/vers/programme</code>''. Gardez cependant Ă l'esprit que ce n'est bien entendu ni plus ni moins sĂ©curisĂ©.</p> <h3><a name="verify" id="verify">Comment vĂ©rifier si une clĂ© privĂ©e correspond bien Ă son certificat ?</a></h3> <p>Une clĂ© privĂ©e contient une sĂ©rie de nombres. Deux de ces nombres forment la "clĂ© publique", les autres appartiennent Ă la "clĂ© privĂ©e". Les bits de la "clĂ© publique" sont inclus quand vous gĂ©nĂ©rez une CSR, et font par consĂ©quent partie du certificat associĂ©.</p> <p>Pour vĂ©rifier que la clĂ© publique contenue dans votre certificat correspond bien Ă la partie publique de votre clĂ© privĂ©e, il vous suffit de comparer ces nombres. Pour afficher le certificat et la clĂ©, utilisez cette commande :</p> <p><code><strong>$ openssl x509 -noout -text -in server.crt</strong></code><br /> <code><strong>$ openssl rsa -noout -text -in server.key</strong></code></p> <p>Les parties `modulus' et `public exponent' doivent ĂȘtre identiques dans la clĂ© et le certificat. Comme le `public exponent' est habituellement 65537, et comme il est difficile de vĂ©rifier visuellement que les nombreux nombres du `modulus' sont identiques, vous pouvez utiliser l'approche suivante :</p> <p><code><strong>$ openssl x509 -noout -modulus -in server.crt | openssl md5</strong></code><br /> <code><strong>$ openssl rsa -noout -modulus -in server.key | openssl md5</strong></code></p> <p>Il ne vous reste ainsi que deux nombres relativement courts Ă comparer. Il est possible, en thĂ©orie que ces deux nombres soient les mĂȘmes, sans que les nombres du modulus soient identiques, mais les chances en sont infimes.</p> <p>Si vous souhaitez vĂ©rifier Ă quelle clĂ© ou certificat appartient une CSR particuliĂšre, vous pouvez effectuer le mĂȘme calcul sur la CSR comme suit :</p> <p><code><strong>$ openssl req -noout -modulus -in server.csr | openssl md5</strong></code></p> <h3><a name="pemder" id="pemder">Comment convertir un certificat du format PEM au format DER ?</a></h3> <p>Le format des certificats par dĂ©faut pour OpenSSL est le format PEM, qui est tout simplement un format DER codĂ© en Base64, avec des lignes d'en-tĂȘtes et des annotations. Certaines applications, comme Microsoft Internet Explorer, ont besoin d'un certificat au format DER de base. Vous pouvez convertir un fichier PEM <code>cert.pem</code> en son Ă©quivalent au format DER <code>cert.der</code> Ă l'aide de la commande suivante : <code><strong>$ openssl x509 -in cert.pem -out cert.der -outform DER</strong></code></p> <h3><a name="gid" id="gid">Pourquoi les navigateurs se plaignent-ils de ne pas pouvoir vĂ©rifier mon certificat de serveur ?</a></h3> <p>Ceci peut se produire si votre certificat de serveur est signĂ© par une autoritĂ© de certification intermĂ©diaire. Plusieurs CAs, comme Verisign ou Thawte, ont commencĂ© Ă signer les certificats avec des certificats intermĂ©diaires au lieu de leur certificat racine.</p> <p>Les certificats de CA intermĂ©diaires se situe Ă un niveau intermĂ©diaire entre le certificat racine de la CA (qui est installĂ© dans les navigateurs) et le certificat du serveur (que vous avez installĂ© sur votre serveur). Pour que le navigateur puisse traverser et vĂ©rifier la chaĂźne de confiance depuis le certificat du serveur jusqu'au certificat racine, il faut lui fournir les certificats intermĂ©diaires. Les CAs devraient pouvoir fournir de tels paquetages de certificats intermĂ©diaires Ă installer sur les serveurs.</p> <p>Vous devez inclure ces certificats intermĂ©diaires via la directive <code class="directive"><a href="../mod/mod_ssl.html#sslcertificatechainfile">SSLCertificateChainFile</a></code>.</p> </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> <div class="section"> <h2><a name="aboutssl" id="aboutssl">Le protocole SSL</a></h2> <ul> <li><a href="#random">Pourquoi de nombreuses et alĂ©atoires erreurs de protocole SSL apparaissent-elles en cas de forte charge du serveur ?</a></li> <li><a href="#load">Pourquoi la charge de mon serveur est-elle plus importante depuis qu'il sert des ressources chiffrĂ©es en SSL ?</a></li> <li><a href="#establishing">Pourquoi les connexions en HTTPS Ă mon serveur prennent-elles parfois jusqu'Ă 30 secondes pour s'Ă©tablir ?</a></li> <li><a href="#ciphers">Quels sont les algorithmes de chiffrement supportĂ©s par mod_ssl ?</a></li> <li><a href="#adh">Pourquoi une erreur ``no shared cipher'' apparaĂźt-elle quand j'essaie d'utiliser un algorithme de chiffrement Diffie-Hellman anonyme (ADH) ?</a></li> <li><a href="#sharedciphers">Pourquoi une erreur ``no shared cipher'' apparaĂźt-elle lorsqu'on se connecte Ă mon serveur fraĂźchement installĂ© ?</a></li> <li><a href="#vhosts">Pourquoi ne peut-on pas utiliser SSL avec des hĂŽtes virtuels identifiĂ©s par un nom et non par une adresse IP ?</a></li> <li><a href="#vhosts2">Est-il possible d'utiliser l'hĂ©bergement virtuel basĂ© sur le nom d'hĂŽte pour diffĂ©rencier plusieurs hĂŽtes virtuels ?</a></li> <li><a href="#comp">Comment mettre en oeuvre la compression SSL ?</a></li> <li><a href="#lockicon">Lorsque j'utilise l'authentification de base sur HTTPS, l'icĂŽne de verrouillage des navigateurs Netscape reste ouverte quand la boĂźte de dialogue d'authentification apparaĂźt. Cela signifie-t-il que les utilisateur et mot de passe sont envoyĂ©s en clair ?</a></li> <li><a href="#msie">Pourquoi des erreurs d'entrĂ©e/sortie apparaissent-elles lorsqu'on se connecte Ă un serveur Apache+mod_ssl avec Microsoft Internet Explorer (MSIE) ?</a></li> <li><a href="#srp">Comment activer TLS-SRP ?</a></li> <li><a href="#javadh">Pourquoi des erreurs de nĂ©gociation apparaissent avec les clients basĂ©s sur Java lorsqu'on utilise un certificat de plus de 1024 bits ?</a></li> </ul> <h3><a name="random" id="random">Pourquoi de nombreuses et alĂ©atoires erreurs de protocole SSL apparaissent-elles en cas de forte charge du serveur ?</a></h3> <p>Ce problĂšme peut avoir plusieurs causes, mais la principale rĂ©side dans le cache de session SSL dĂ©fini par la directive <code class="directive"><a href="../mod/mod_ssl.html#sslsessioncache">SSLSessionCache</a></code>. Le cache de session DBM est souvent Ă la source du problĂšme qui peut ĂȘtre rĂ©solu en utilisant le cache de session SHM (ou en n'utilisant tout simplement pas de cache).</p> <h3><a name="load" id="load">Pourquoi la charge de mon serveur est-elle plus importante depuis qu'il sert des ressources chiffrĂ©es en SSL ?</a></h3> <p>SSL utilise un procĂ©dĂ© de chiffrement fort qui nĂ©cessite la manipulation d'une quantitĂ© trĂšs importante de nombres. Lorsque vous effectuez une requĂȘte pour une page web via HTTPS, tout (mĂȘme les images) est chiffrĂ© avant d'ĂȘtre transmis. C'est pourquoi un accroissement du traffic HTTPS entraĂźne une augmentation de la charge.</p> <h3><a name="establishing" id="establishing">Pourquoi les connexions en HTTPS Ă mon serveur prennent-elles parfois jusqu'Ă 30 secondes pour s'Ă©tablir ?</a></h3> <p>Ce problĂšme provient en gĂ©nĂ©ral d'un pĂ©riphĂ©rique <code>/dev/random</code> qui bloque l'appel systĂšme read(2) jusqu'Ă ce que suffisamment d'entropie soit disponible pour servir la requĂȘte. Pour plus d'information, se rĂ©fĂ©rer au manuel de rĂ©fĂ©rence de la directive <code class="directive"><a href="../mod/mod_ssl.html#sslrandomseed">SSLRandomSeed</a></code>.</p> <h3><a name="ciphers" id="ciphers">Quels sont les algorithmes de chiffrement supportĂ©s par mod_ssl ?</a></h3> <p>En gĂ©nĂ©ral, tous les algorithmes de chiffrement supportĂ©s par la version d'OpenSSL installĂ©e, le sont aussi par <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code>. La liste des algorithmes disponibles peut dĂ©pendre de la maniĂšre dont vous avez installĂ© OpenSSL. Typiquement, au moins les algorithmes suivants sont supportĂ©s :</p> <ol> <li>RC4 avec SHA1</li> <li>AES avec SHA1</li> <li>Triple-DES avec SHA1</li> </ol> <p>Pour dĂ©terminer la liste rĂ©elle des algorithmes disponibles, vous pouvez utiliser la commande suivante :</p> <div class="example"><p><code>$ openssl ciphers -v</code></p></div> <h3><a name="adh" id="adh">Pourquoi une erreur ``no shared cipher'' apparaĂźt-elle quand j'essaie d'utiliser un algorithme de chiffrement Diffie-Hellman anonyme (ADH) ?</a></h3> <p>Par dĂ©faut et pour des raisons de sĂ©curitĂ©, OpenSSl ne permet <em>pas</em> l'utilisation des algorithmes de chiffrements ADH. Veuillez vous informer sur les effets pervers potentiels si vous choisissez d'activer le support de ces algorithmes de chiffrements.</p> <p>Pour pouvoir utiliser les algorithmes de chiffrements Diffie-Hellman anonymes (ADH), vous devez compiler OpenSSL avec ``<code>-DSSL_ALLOW_ADH</code>'', puis ajouter ``<code>ADH</code>'' Ă votre directive <code class="directive"><a href="../mod/mod_ssl.html#sslciphersuite">SSLCipherSuite</a></code>.</p> <h3><a name="sharedciphers" id="sharedciphers">Pourquoi une erreur ``no shared cipher'' apparaĂźt-elle lorsqu'on se connecte Ă mon serveur fraĂźchement installĂ© ?</a></h3> <p>Soit vous avez fait une erreur en dĂ©finissant votre directive <code class="directive"><a href="../mod/mod_ssl.html#sslciphersuite">SSLCipherSuite</a></code> (comparez-la avec l'exemple prĂ©configurĂ© dans <code>extra/httpd-ssl.conf</code>), soit vous avez choisi d'utiliser des algorithmes DSA/DH au lieu de RSA lorsque vous avez gĂ©nĂ©rĂ© votre clĂ© privĂ©e, et avez ignorĂ© ou ĂȘtes passĂ© outre les avertissements. Si vous avez choisi DSA/DH, votre serveur est incapable de communiquer en utilisant des algorithmes de chiffrements SSL basĂ©s sur RSA (du moins tant que vous n'aurez pas configurĂ© une paire clĂ©/certificat RSA additionnelle). Les navigateurs modernes tels que NS ou IE ne peuvent communiquer par SSL qu'avec des algorithmes RSA. C'est ce qui provoque l'erreur "no shared ciphers". Pour la corriger, gĂ©nĂ©rez une nouvelle paire clĂ©/certificat pour le serveur en utilisant un algorithme de chiffrement RSA.</p> <h3><a name="vhosts" id="vhosts">Pourquoi ne peut-on pas utiliser SSL avec des hĂŽtes virtuels identifiĂ©s par un nom et non par une adresse IP ?</a></h3> <p>La raison est trĂšs technique, et s'apparente au problĂšme de la primautĂ© de l'oeuf ou de la poule. La couche du protocole SSL se trouve en dessous de la couche de protocole HTTP qu'elle encapsule. Lors de l'Ă©tablissement d'une connexion SSL (HTTPS), Apache/mod_ssl doit nĂ©gocier les paramĂštres du protocole SSL avec le client. Pour cela, mod_ssl doit consulter la configuration du serveur virtuel (par exemple, il doit accĂ©der Ă la suite d'algorithmes de chiffrement, au certificat du serveur, etc...). Mais afin de sĂ©lectionner le bon serveur virtuel, Apache doit connaĂźtre le contenu du champ d'en-tĂȘte HTTP <code>Host</code>. Pour cela, il doit lire l'en-tĂȘte de la requĂȘte HTTP. Mais il ne peut le faire tant que la nĂ©gociation SSL n'est pas terminĂ©e, or, la phase de nĂ©gociation SSL a besoin du nom d'hĂŽte contenu dans l'en-tĂȘte de la requĂȘte. Voir la question suivante pour contourner ce problĂšme.</p> <p>Notez que si votre certificat comporte un nom de serveur avec caractĂšres gĂ©nĂ©riques, ou des noms de serveurs multiples dans le champ subjectAltName, vous pouvez utiliser SSL avec les serveurs virtuels Ă base de noms sans avoir Ă contourner ce problĂšme.</p> <h3><a name="vhosts2" id="vhosts2">Est-il possible d'utiliser l'hĂ©bergement virtuel basĂ© sur le nom d'hĂŽte pour diffĂ©rencier plusieurs hĂŽtes virtuels ?</a></h3> <p>L'hĂ©bergement virtuel basĂ© sur le nom est une mĂ©thode trĂšs populaire d'identification des diffĂ©rents hĂŽtes virtuels. Il permet d'utiliser la mĂȘme adresse IP et le mĂȘme numĂ©ro de port pour de nombreux sites diffĂ©rents. Lorsqu'on se tourne vers SSL, il semble tout naturel de penser que l'on peut appliquer la mĂȘme mĂ©thode pour gĂ©rer plusieurs hĂŽtes virtuels SSL sur le mĂȘme serveur.</p> <p>C'est possible, mais seulement si on utilise une version 2.2.12 ou supĂ©rieure du serveur web compilĂ©e avec OpenSSL version 0.9.8j ou supĂ©rieure. Ceci est du au fait que l'utilisation de l'hĂ©bergement virtuel Ă base de nom avec SSL nĂ©cessite une fonctionnalitĂ© appelĂ©e Indication du Nom de Serveur (Server Name Indication - SNI) que seules les rĂ©visions les plus rĂ©centes de la spĂ©cification SSL supportent.</p> <p>Notez que si votre certificat comporte un nom de serveur avec caractĂšres gĂ©nĂ©riques, ou des noms de serveurs multiples dans le champ subjectAltName, vous pouvez utiliser SSL avec les serveurs virtuels Ă base de noms sans avoir Ă contourner ce problĂšme.</p> <p>La raison en est que le protocole SSL constitue une couche sĂ©parĂ©e qui encapsule le protocole HTTP. Aini, la session SSL nĂ©cessite une transaction sĂ©parĂ©e qui prend place avant que la session HTTP n'ait dĂ©butĂ©. Le serveur reçoit une requĂȘte SSL sur l'adresse IP X et le port Y (habituellement 443). Comme la requĂȘte SSL ne contenait aucun en-tĂȘte Host:, le serveur n'avait aucun moyen de dĂ©terminer quel hĂŽte virtuel SSL il devait utiliser. En gĂ©nĂ©ral, il utilisait le premier qu'il trouvait et qui correspondait Ă l'adresse IP et au port spĂ©cifiĂ©s.</p> <p>Par contre, si vous utilisez des versions du serveur web et d'OpenSSL qui supportent SNI, et si le navigateur du client le supporte aussi, alors le nom d'hĂŽte sera inclus dans la requĂȘte SSL originale, et le serveur web pourra sĂ©lectionner le bon serveur virtuel SSL.</p> <p>Bien entendu, vous pouvez utiliser l'hĂ©bergement virtuel basĂ© sur le nom pour identifier de nombreux hĂŽtes virtuels non-SSL (tous sur le port 80 par exemple), et ne gĂ©rer qu'un seul hĂŽte virtuel SSL (sur le port 443). Mais dans ce cas, vous devez dĂ©finir le numĂ©ro de port non-SSL Ă l'aide de la directive NameVirtualHost dans ce style :</p> <pre class="prettyprint lang-config">NameVirtualHost 192.168.1.1:80</pre> <p>il existe d'autres solutions alternatives comme :</p> <p>Utiliser des adresses IP diffĂ©rentes pour chaque hĂŽte SSL. Utiliser des numĂ©ros de port diffĂ©rents pour chaque hĂŽte SSL.</p> <h3><a name="comp" id="comp">Comment mettre en oeuvre la compression SSL ?</a></h3> <p>Bien que la nĂ©gociation pour la compression SSL ait Ă©tĂ© dĂ©finie dans la spĂ©cification de SSLv2 et TLS, ce n'est qu'en mai 2004 que la RFC 3749 a dĂ©fini DEFLATE comme une mĂ©thode de compression standard nĂ©gociable. </p> <p>Depuis la version 0.9.8, OpenSSL supporte cette compression par dĂ©faut lorsqu'il est compilĂ© avec l'option <code>zlib</code>. Si le client et le serveur supportent la compression, elle sera utilisĂ©e. Cependant, la plupart des clients essaient encore de se connecter avec un Hello SSLv2. Comme SSLv2 ne comportait pas de table des algorithmes de compression prĂ©fĂ©rĂ©s dans sa nĂ©gociation, la compression ne peut pas ĂȘtre nĂ©gociĂ©e avec ces clients. Si le client dĂ©sactive le support SSLv2, un Hello SSLv3 ou TLS peut ĂȘtre envoyĂ©, selon la bibliothĂšque SSL utilisĂ©e, et la compression peut ĂȘtre mise en oeuvre. Vous pouvez vĂ©rifier si un client utilise la compression SSL en journalisant la variable <code>%{SSL_COMPRESS_METHOD}x</code>. </p> <h3><a name="lockicon" id="lockicon">Lorsque j'utilise l'authentification de base sur HTTPS, l'icĂŽne de verrouillage des navigateurs Netscape reste ouverte quand la boĂźte de dialogue d'authentification apparaĂźt. Cela signifie-t-il que les utilisateur et mot de passe sont envoyĂ©s en clair ?</a></h3> <p>Non, le couple utilisateur/mot de passe est transmis sous forme chiffrĂ©e. L'icĂŽne de chiffrement dans les navigateurs Netscape n'est pas vraiment synchronisĂ© avec la couche SSL/TLS. Il ne passe Ă l'Ă©tat verrouillĂ© qu'au moment oĂč la premiĂšre partie des donnĂ©es relatives Ă la page web proprement dite sont transfĂ©rĂ©es, ce qui peut prĂȘter Ă confusion. Le dispositif d'authentification de base appartient Ă la couche HTTP, qui est situĂ©e au dessus de la couche SSL/TLS dans HTTPS. Avant tout transfert de donnĂ©es HTTP sous HTTPS, la couche SSL/TLS a dĂ©jĂ achevĂ© sa phase de nĂ©gociation et basculĂ© dans le mode de communication chiffrĂ©e. Ne vous laissez donc pas abuser par l'Ă©tat de cet icĂŽne.</p> <h3><a name="msie" id="msie">Pourquoi des erreurs d'entrĂ©e/sortie apparaissent-elles lorsqu'on se connecte via HTTPS Ă un serveur Apache+mod_ssl avec des versions anciennes de Microsoft Internet Explorer (MSIE) ?</a></h3> <p>La premiĂšre raison en est la prĂ©sence dans l'implĂ©mentation SSL de certaines versions de MSIE de bogues subtils en rapport avec le dispositif de "maintien en vie" (keep-alive) HTTP, et les alertes de notification de fermeture de session SSL en cas de coupure de la connexion au point d'entrĂ©e (socket). De plus, l'interaction entre SSL et les fonctionnalitĂ©s HTTP/1.1 pose problĂšme avec certaines versions de MSIE. Vous pouvez contourner ces problĂšmes en interdisant Ă Apache l'utilisation de HTTP/1.1, les connexions avec maintien en vie ou l'envoi de messages de notification de fermeture de session SSL aux clients MSIE. Pour cela, vous pouvez utiliser la directive suivante dans votre section d'hĂŽte virtuel avec support SSL :</p> <pre class="prettyprint lang-config">SetEnvIf User-Agent "MSIE [2-5]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0</pre> <p>En outre, certaines versions de MSIE ont des problĂšmes avec des algorithmes de chiffrement particuliers. HĂ©las, il n'est pas possible d'apporter une solution spĂ©cifique Ă MSIE pour ces problĂšmes, car les algorithmes de chiffrement sont utilisĂ©s dĂšs la phase de nĂ©gociation SSL. Ainsi, une directive <code class="directive"><a href="../mod/mod_setenvif.html#setenvif">SetEnvIf</a></code> spĂ©cifique Ă MSIE ne peut ĂȘtre d'aucun secours. Par contre, vous devrez ajuster les paramĂštres gĂ©nĂ©raux de maniĂšre drastique. Avant de vous dĂ©cider, soyez sĂ»r que vos clients rencontrent vraiment des problĂšmes. Dans la nĂ©gative, n'effectuez pas ces ajustements car ils affecteront <em>tous</em> vos clients, ceux utilisant MSIE, mais aussi les autres.</p> <h3><a name="srp" id="srp">Comment activer TLS-SRP ?</a></h3> <p>Le protocole TLS-SRP (Echange de clĂ©s sĂ©curisĂ© par mot de passe pour TLS comme spĂ©cifiĂ© dans la RFC 5054) peut complĂ©ter ou mĂȘme remplacer les certificats lors du processus d'authentification des connexions SSL. Pour utiliser TLS-SRP, spĂ©cifiez un fichier de vĂ©rification SRP OpenSSL via la directive <code class="directive"><a href="../mod/mod_ssl.html#sslsrpverifierfile">SSLSRPVerifierFile</a></code>. Vous pouvez crĂ©er le fichier de vĂ©rification via l'utilitaire <code>openssl</code> :</p> <div class="example"><p><code> openssl srp -srpvfile passwd.srpv -add username </code></p></div> <p>Une fois ce fichier créé, vous devez le rĂ©fĂ©rencer dans la configuration du serveur SSL :</p> <div class="example"><p><code> SSLSRPVerifierFile /path/to/passwd.srpv </code></p></div> <p>Pour forcer les clients Ă utiliser des algorithmes de chiffrement basĂ©s sur TLS-SRP et s'affranchissant des certificats, utilisez la directive suivante :</p> <div class="example"><p><code> SSLCipherSuite "!DSS:!aRSA:SRP" </code></p></div> <h3><a name="javadh" id="javadh">Pourquoi des erreurs de nĂ©gociation apparaissent avec les clients basĂ©s sur Java lorsqu'on utilise un certificat de plus de 1024 bits ?</a></h3> <p>Depuis la version 2.4.7, <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> utilise des paramĂštres DH qui comportent des nombres premiers de plus de 1024 bits. Cependant, java 7 et ses versions antĂ©rieures ne supportent que les nombres premiers DH d'une longueur maximale de 1024 bits.</p> <p>Si votre client basĂ© sur Java s'arrĂȘte avec une exception telle que <code>java.lang.RuntimeException: Could not generate DH keypair</code> et <code>java.security.InvalidAlgorithmParameterException: Prime size must be multiple of 64, and can only range from 512 to 1024 (inclusive)</code>, et si httpd enregistre le message <code>tlsv1 alert internal error (SSL alert number 80)</code> dans son journal des erreurs (avec un <code class="directive"><a href="../mod/core.html#loglevel">LogLevel</a></code> <code>info</code> ou supĂ©rieur), vous pouvez soit rĂ©arranger la liste d'algorithmes de mod_ssl via la directive <code class="directive"><a href="../mod/mod_ssl.html#sslciphersuite">SSLCipherSuite</a></code> (Ă©ventuellement en conjonction avec la directive <code class="directive"><a href="../mod/mod_ssl.html#sslhonorcipherorder">SSLHonorCipherOrder</a></code>), soit utiliser des paramĂštres DH personnalisĂ©s avec un nombre premier de 1024 bits, paramĂštres qui seront toujours prioritaires par rapport Ă tout autre paramĂštre DH par dĂ©faut.</p> <p>Pour gĂ©nĂ©rer des paramĂštres DH personnalisĂ©s, utilisez la commande <code>openssl dhparam 1024</code>. Vous pouvez aussi utiliser les paramĂštres DH standards issus de la <a href="http://www.ietf.org/rfc/rfc2409.txt">RFC 2409</a>, section 6.2 :</p> <div class="example"><pre>-----BEGIN DH PARAMETERS----- MIGHAoGBAP//////////yQ/aoiFowjTExmKLgNwc0SkCTgiKZ8x0Agu+pjsTmyJR Sgh5jjQE3e+VGbPNOkMbMCsKbfJfFDdP4TVtbVHCReSFtXZiXn7G9ExC6aY37WsL /1y29Aa37e44a/taiZ+lrp8kEXxLH+ZJKGZR7OZTgf//////////AgEC -----END DH PARAMETERS-----</pre></div> <p>Ajoute les paramĂštres personnalisĂ©s incluant les lignes "BEGIN DH PARAMETERS" et "END DH PARAMETERS" Ă la fin du premier fichier de certificat dĂ©fini via la directive <code class="directive"><a href="../mod/mod_ssl.html#sslcertificatefile">SSLCertificateFile</a></code>.</p> </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> <div class="section"> <h2><a name="support" id="support">Support de mod_ssl</a></h2> <ul> <li><a href="#resources">Quelles sont les sources d'informations disponibles en cas de problĂšme avec mod_ssl ?</a></li> <li><a href="#contact">Qui peut-on contacter pour un support en cas de problĂšme avec mod_ssl ?</a></li> <li><a href="#reportdetails">Quelles informations dois-je fournir lors de l'Ă©criture d'un rapport de bogue ?</a></li> <li><a href="#coredumphelp">Un vidage mĂ©moire s'est produit, pouvez-vous m'aider ?</a></li> <li><a href="#backtrace">Comment puis-je obtenir une journalisation de ce qui s'est passĂ©, pour m'aider Ă trouver la raison de ce vidage mĂ©moire ?</a></li> </ul> <h3><a name="resources" id="resources">Quelles sont les sources d'informations disponibles en cas de problĂšme avec mod_ssl ?</a></h3> <p>Voici les sources d'informations disponibles ; vous devez chercher ici en cas de problĂšme.</p> <dl> <dt>Vous trouverez des rĂ©ponses dans la Foire Aux Questions du manuel utilisateur (ce document)</dt> <dd><a href="http://httpd.apache.org/docs/2.4/ssl/ssl_faq.html"> http://httpd.apache.org/docs/2.4/ssl/ssl_faq.html</a><br /> Cherchez tout d'abord dans la foire aux questions (ce document). Si votre question est courante, on a dĂ©jĂ dĂ» y rĂ©pondre de nombreuses fois, et elle fait probablement partie de ce document. </dd> </dl> <h3><a name="contact" id="contact">Qui peut-on contacter pour un support en cas de problĂšme avec mod_ssl ?</a></h3> <p>Voici toutes les possibilitĂ©s de support pour mod_ssl, par ordre de prĂ©fĂ©rence. Merci d'utiliser ces possibilitĂ©s <em>dans cet ordre</em> - ne vous prĂ©cipitez pas sur celle qui vous paraĂźt la plus allĂ©chante. </p> <ol> <li><em>Envoyez un rapport de problĂšme Ă la liste de diffusion de support des utilisateurs d'Apache httpd</em><br /> <a href="mailto:users@httpd.apache.org"> users@httpd.apache.org</a><br /> C'est la deuxiĂšme maniĂšre de soumettre votre rapport de problĂšme. Ici aussi, vous devez d'abord vous abonner Ă la liste, mais vous pourrez ensuite discuter facilement de votre problĂšme avec l'ensemble de la communautĂ© d'utilisateurs d'Apache httpd. </li> <li><em>Ecrire un rapport de problĂšme dans la base de donnĂ©es des bogues</em><br /> <a href="http://httpd.apache.org/bug_report.html"> http://httpd.apache.org/bug_report.html</a><br /> C'est la derniĂšre maniĂšre de soumettre votre rapport de problĂšme. Vous ne devez utiliser cette solution que si vous avez dĂ©jĂ Ă©crit aux listes de diffusion, et n'avez pas trouvĂ© de solution. Merci de suivre les instructions de la page mentionnĂ©e ci-dessus <em>avec soin</em>. </li> </ol> <h3><a name="reportdetails" id="reportdetails">Quelles informations dois-je fournir lors de l'Ă©criture d'un rapport de bogue ?</a></h3> <p>Vous devez toujours fournir au moins les informations suivantes :</p> <dl> <dt>Les versions d'Apache httpd et OpenSSL installĂ©es</dt> <dd>La version d'Apache peut ĂȘtre dĂ©terminĂ©e en exĂ©cutant <code>httpd -v</code>. La version d'OpenSSL peut ĂȘtre dĂ©terminĂ©e en exĂ©cutant <code>openssl version</code>. Si Lynx est installĂ©, vous pouvez aussi exĂ©cuter la commande<code>lynx -mime_header http://localhost/ | grep Server</code> et ainsi obtenir ces informations en une seule fois. </dd> <dt>Les dĂ©tails de votre installation d'Apache httpd et OpenSSL</dt> <dd>A cet effet, vous pouvez fournir un fichier journal de votre session de terminal qui montre les Ă©tapes de la configuration et de l'installation. En cas d'impossibilitĂ©, vous devez au moins fournir la ligne de commande <code class="program"><a href="../programs/configure.html">configure</a></code> que vous avez utilisĂ©e. </dd> <dt>En cas de vidage mĂ©moire, inclure une trace de ce qui s'est passĂ©</dt> <dd>Si votre serveur Apache httpd fait un vidage de sa mĂ©moire, merci de fournir en piĂšce jointe un fichier contenant une trace de la zone dĂ©diĂ©e Ă la pile (voir <a href="#backtrace">ci-dessous</a> pour des informations sur la maniĂšre de l'obtenir). Il est nĂ©cessaire de disposer de ces informations afin de pouvoir dĂ©terminer la raison de votre vidage mĂ©moire. </dd> <dt>Une description dĂ©taillĂ©e de votre problĂšme</dt> <dd>Ne riez pas, nous sommes sĂ©rieux ! De nombreux rapports n'incluent pas de description de la vĂ©ritable nature du problĂšme. Sans ces informations, il est trĂšs difficile pour quiconque de vous aider. Donc, et c'est votre propre intĂ©rĂȘt (vous souhaitez que le problĂšme soit rĂ©solu, n'est-ce pas ?), fournissez, s'il vous plait, le maximum de dĂ©tails possible. Bien entendu, vous devez aussi inclure tout ce qui a Ă©tĂ© dit prĂ©cĂ©demment. </dd> </dl> <h3><a name="coredumphelp" id="coredumphelp">Un vidage mĂ©moire s'est produit, pouvez-vous m'aider ?</a></h3> <p>En gĂ©nĂ©ral non, du moins tant que vous n'aurez pas fourni plus de dĂ©tails Ă propos de la localisation dans le code oĂč Apache a effectuĂ© son vidage mĂ©moire. Ce dont nous avons en gĂ©nĂ©ral besoin pour vous aider est une trace de ce qui s'est passĂ© (voir la question suivante). Sans cette information, il est pratiquement impossible de dĂ©terminer la nature du problĂšme et de vous aider Ă le rĂ©soudre.</p> <h3><a name="backtrace" id="backtrace">Comment puis-je obtenir une journalisation de ce qui s'est passĂ©, pour m'aider Ă trouver la raison de ce vidage mĂ©moire ?</a></h3> <p>Vous trouverez ci-dessous les diffĂ©rentes Ă©tapes permettant d'obtenir une journalisation des Ă©vĂšnements (backtrace) :</p> <ol> <li>Assurez-vous que les symboles de dĂ©bogage sont disponibles, au moins pour Apache. Pour cela, sur les plates-formes oĂč GCC/GDB est utilisĂ©, vous devez compiler Apache+mod_ssl avec l'option ``<code>OPTIM="-g -ggdb3"</code>''. Sur les autres plates-formes, l'option ``<code>OPTIM="-g"</code>'' est un minimum. </li> <li>DĂ©marrez le serveur et essayez de reproduire le vidage mĂ©moire. A cet effet, vous pouvez utiliser une directive du style ``<code>CoreDumpDirectory /tmp</code>'' pour ĂȘtre sĂ»r que le fichier de vidage mĂ©moire puisse bien ĂȘtre Ă©crit. Vous devriez obtenir un fichier <code>/tmp/core</code> ou <code>/tmp/httpd.core</code>. Si ce n'est pas le cas, essayez de lancer votre serveur sous un UID autre que root. Pour des raisons de sĂ©curitĂ©, de nombreux noyaux modernes de permettent pas Ă un processus de vider sa mĂ©moire une fois qu'il a accompli un <code>setuid()</code> (Ă moins qu'il effectue un <code>exec()</code>) car des informations d'un niveau privilĂ©giĂ© pourraient ĂȘtre transmises en mĂ©moire. Si nĂ©cessaire, vous pouvez exĂ©cuter <code>/chemin/vers/httpd -X</code> manuellement afin de ne pas permettre Ă Apache de se clĂŽner (fork). </li> <li>Analysez le vidage mĂ©moire. Pour cela, exĂ©cutez <code>gdb /path/to/httpd /tmp/httpd.core</code> ou une commande similaire. Dans GDB, tout ce que vous avez Ă faire est d'entrer <code>bt</code>, et voila, vous obtenez la backtrace. Pour les dĂ©bogueurs autres que GDB consulter le manuel correspondant. </li> </ol> </div></div> <div class="bottomlang"> <p><span>Langues Disponibles: </span><a href="../en/ssl/ssl_faq.html" hreflang="en" rel="alternate" title="English"> en </a> | <a href="../fr/ssl/ssl_faq.html" title="Français"> 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 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 Libera.chat, or sent to our <a href="https://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_faq.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 2021 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>
Upload File
Create Folder