<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/context.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'fr',
  ),
  'this' => 
  array (
    0 => 'context.ssl.php',
    1 => 'Options de contexte SSL',
    2 => 'Liste des options de contexte SSL',
  ),
  'up' => 
  array (
    0 => 'context.php',
    1 => 'Options et param&egrave;tres de contexte',
  ),
  'prev' => 
  array (
    0 => 'context.ftp.php',
    1 => 'Options de contexte FTP',
  ),
  'next' => 
  array (
    0 => 'context.phar.php',
    1 => 'Les options du contexte Phar',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'language/context/ssl.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="context.ssl" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">Options de contexte SSL</h1>
  <p class="refpurpose"><span class="refname">Options de contexte SSL</span> &mdash; <span class="dc-title">Liste des options de contexte SSL</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-context.ssl-description">
  <h3 class="title">Description</h3>
  <p class="simpara">
   Options de contexte pour les protocoles <code class="literal">ssl://</code>
   et <code class="literal">tls://</code>.
  </p>
 </div>


 <div class="refsect1 options" id="refsect1-context.ssl-options">
  <h3 class="title">Options</h3>
  <dl>
   
    <dt id="context.ssl.peer-name">
     <code class="parameter">peer_name</code>
     <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
    </dt>
    <dd>
     <p class="simpara">
      Nom du pair à utiliser. Si cette valeur n&#039;est pas définie, alors le
      nom sera deviné en se basant sur le nom d&#039;hôte utilisé lors de
      l&#039;ouverture du flux.
     </p>
    </dd>
   
   
    <dt id="context.ssl.verify-peer">
     <code class="parameter">verify_peer</code>
     <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>
    </dt>
    <dd>
     <p class="simpara">
      Nécessite une vérification du certificat SSL utilisé.
     </p>
     <p class="simpara">
      Par défaut, vaut <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong>.
     </p>
    </dd>
   
   
    <dt id="context.ssl.verify-peer-name">
     <code class="parameter">verify_peer_name</code>
     <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>
    </dt>
    <dd>
     <p class="simpara">
      Nécessite la vérification du nom du pair.
     </p>
     <p class="simpara">
      Par défaut, vaut <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong>.
     </p>
    </dd>
   
   
    <dt id="context.ssl.allow-self-signed">
     <code class="parameter">allow_self_signed</code>
     <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>
    </dt>
    <dd>
     <p class="simpara">
      Permet les certificats autosignés. Requiert le
      paramètre <a href="context.ssl.php#context.ssl.verify-peer" class="link"><code class="parameter">verify_peer</code></a>.
     </p>
     <p class="simpara">
      Par défaut, vaut <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>
     </p>
    </dd>
   
   
    <dt id="context.ssl.cafile">
     <code class="parameter">cafile</code>
     <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
    </dt>
    <dd>
     <p class="simpara">
      Endroit où se trouve le fichier de l&#039;autorité du certificat
      sur le système de fichiers local et qui devra être utilisé
      avec l&#039;option de contexte <code class="literal">verify_peer</code>
      pour identifier le pair distant.
     </p>
    </dd>
   
   
    <dt id="context.ssl.capath">
     <code class="parameter">capath</code>
     <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
    </dt>
    <dd>
     <p class="simpara">
      Si <code class="literal">cafile</code> n&#039;est pas spécifié ou si le certificat
      n&#039;a pas été trouvé, une recherche dans le dossier pointé par
      <code class="literal">capath</code> sera effectuée afin d&#039;y trouver un certificat
      valide. <code class="literal">capath</code> doit être un dossier de certificats correctement hachés.
     </p>
    </dd>
   
   
    <dt id="context.ssl.local-cert">
     <code class="parameter">local_cert</code>
     <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
    </dt>
    <dd>
     <p class="simpara">
      Chemin vers le certificat local, sur le système de fichiers.
      Ce doit être un fichier encodé <abbr title="Privacy-Enhanced Mail">PEM</abbr> qui contient le certificat
      et la clé privée. Il peut, optionnellement, contenir la
      chaîne de certification de l&#039;émetteur.
      La clé privée peut également être contenue dans un fichier distinct
      spécifié par <code class="literal">local_pk</code>.
     </p>
    </dd>
   
   
    <dt id="context.ssl.local-pk">
     <code class="parameter">local_pk</code>
     <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
    </dt>
    <dd>
     <p class="simpara">
      Chemin d&#039;accès au fichier de clé privée locale sur le système de
      fichiers dans le cas de fichiers distincts pour le certificat
      (<code class="literal">local_cert</code>) et la clé privée.
     </p>
    </dd>
   
   
    <dt id="context.ssl.passphrase">
     <code class="parameter">passphrase</code>
     <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
    </dt>
    <dd>
     <p class="simpara">
      La phrase de passe avec laquelle le fichier
      <code class="literal">local_cert</code> a été encodé.
     </p>
    </dd>
   
   
    <dt id="context.ssl.verify-depth">
     <code class="parameter">verify_depth</code>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
    </dt>
    <dd>
     <p class="simpara">
      Échoue si la chaîne de certification est trop profonde.
     </p>
     <p class="simpara">
      Par défaut, aucune vérification.
     </p>
    </dd>
   
   
    <dt id="context.ssl.ciphers">
     <code class="parameter">ciphers</code>
     <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
    </dt>
    <dd>
     <p class="simpara">
      Définit la liste des chiffrements. Le format de la chaîne est décrit
      sur la page <a href="https://docs.openssl.org/master/man1/openssl-ciphers/" class="link external">&raquo;&nbsp;ciphers(1)</a>.
     </p>
     <p class="simpara">
      Par défaut, vaut <code class="literal">DEFAULT</code>.
     </p>
    </dd>
   
   
    <dt id="context.ssl.capture-peer-cert">
     <code class="parameter">capture_peer_cert</code>
     <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>
    </dt>
    <dd>
     <p class="simpara">
      Si défini à <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong>, une option de contexte <code class="literal">peer_certificate</code>
      sera créée, contenant le certificat du pair.
     </p>
    </dd>
   
   
    <dt id="context.ssl.capture-peer-cert-chain">
     <code class="parameter">capture_peer_cert_chain</code>
     <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>
    </dt>
    <dd>
     <p class="simpara">
      Si défini à <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong>, une option de contexte <code class="literal">peer_certificate_chain</code>
      sera créée, contenant la chaîne de certification.
     </p>
    </dd>
   
   
    <dt id="context.ssl.sni-enabled">
     <code class="parameter">SNI_enabled</code>
     <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>
    </dt>
    <dd>
     <p class="simpara">
      Si vaut <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong>, l&#039;indication sur le nom du serveur sera activée.
      Le fait d&#039;activer SNI permet d&#039;utiliser plusieurs certificats
      sur la même adresse IP.
     </p>
    </dd>
   
   
    <dt id="context.ssl.sni-server-certs">
     <code class="parameter">SNI_server_certs</code>
     <span class="type"><a href="language.types.array.php" class="type array">array</a></span>
    </dt>
    <dd>
     <p class="simpara">
      Un tableau de noms de serveurs et de leurs certificats correspondants,
      à utiliser pour SNI. Les clés sont les noms de serveurs et les valeurs
      sont les chemins vers les fichiers de certificats sur le système de
      fichiers local. Les fichiers de certificats doivent être encodés
      <abbr title="Privacy-Enhanced Mail">PEM</abbr> et contenir à la fois le certificat et la clé privée.
     </p>
     <p class="simpara">
      Disponible à partir de PHP 5.6.0.
     </p>
    </dd>
   
   
    <dt id="context.ssl.alpn-protocols">
     <code class="parameter">alpn_protocols</code>
     <span class="type"><a href="language.types.array.php" class="type array">array</a></span>
    </dt>
    <dd>
     <p class="simpara">
      Un tableau de noms de protocoles de la couche application à utiliser pour
      ALPN (Application-Layer Protocol Negotiation). Les valeurs sont les noms
      de protocoles sous forme de chaînes (par exemple &quot;http/1.1&quot;, &quot;h2&quot;).
     </p>
     <p class="simpara">
      Disponible à partir de PHP 7.0.0 et OpenSSL 1.0.2.
     </p>
    </dd>
   
   
    <dt id="context.ssl.no-ticket">
     <code class="parameter">no_ticket</code>
     <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>
    </dt>
    <dd>
     <p class="simpara">
      Si défini, les tickets de session TLS sont désactivés. Cela peut aider à
      renforcer la sécurité en fournissant la confidentialité persistante
      (Perfect Forward Secrecy, PFS).
     </p>
     <p class="simpara">
      Disponible à partir de PHP 5.3.6.
     </p>
    </dd>
   
   
    <dt id="context.ssl.disable-compression">
     <code class="parameter">disable_compression</code>
     <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>
    </dt>
    <dd>
     <p class="simpara">
      Si défini, la compression TLS sera désactivée.
      Cela peut aider à atténuer le vecteur d&#039;attaque CRIME.
     </p>
    </dd>
   
   
    <dt id="context.ssl.peer-fingerprint">
     <code class="parameter">peer_fingerprint</code>
     <span class="type"><a href="language.types.string.php" class="type string">string</a></span> | <span class="type"><a href="language.types.array.php" class="type array">array</a></span>
    </dt>
    <dd>
     <p class="simpara">
      Interrompt la connexion lorsque le condensé du certificat distant ne correspond pas au hachage spécifié.
     </p>
     <p class="simpara">
      Lorsqu&#039;une <a href="language.types.string.php" class="link">chaîne de caractères</a> est utilisée, la longueur va déterminer l&#039;algorithme
      de hachage utilisé, soit &quot;md5&quot; (32), soit &quot;sha1&quot; (40).
     </p>
     <p class="simpara">
      Lorsqu&#039;un <a href="language.types.array.php" class="link">tableau</a> est utilisé, la clé indique le nom de l&#039;algorithme de
      hachage, et chaque valeur correspondante représente le condensé attendu.
     </p>
    </dd>
   
   
    <dt id="context.ssl.security-level">
     <code class="parameter">security_level</code>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
    </dt>
    <dd>
     <p class="simpara">
      Définit le niveau de sécurité. Si non spécifié, le niveau de sécurité par
      défaut de la bibliothèque est utilisé.
      Les niveaux de sécurité sont décrits dans
      <a href="https://docs.openssl.org/master/man3/SSL_CTX_set_security_level/" class="link external">&raquo;&nbsp;SSL_CTX_get_security_level(3)</a>.
     </p>
     <p class="simpara">
      Disponible à partir de PHP 7.2.0 et OpenSSL 1.1.0.
     </p>
    </dd>
   
   
    <dt id="context.ssl.min-proto-version">
     <code class="parameter">min_proto_version</code>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
    </dt>
    <dd>
     <p class="simpara">
      Définit la version minimale du protocole autorisée. Si non spécifiée, la
      version minimale du protocole par défaut de la bibliothèque est utilisée.
      Les versions du protocole sont décrites dans
      <a href="https://docs.openssl.org/master/man3/SSL_CTX_set_min_proto_version/" class="link external">&raquo;&nbsp;SSL_CTX_set_min_proto_version(3)</a>.
     </p>
     <p class="simpara">
      Disponible à partir de PHP 7.3.0 et OpenSSL 1.1.0.
     </p>
    </dd>
   
   
    <dt id="context.ssl.max-proto-version">
     <code class="parameter">max_proto_version</code>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
    </dt>
    <dd>
     <p class="simpara">
      Définit la version maximale du protocole autorisée. Si non spécifiée, la
      version maximale du protocole par défaut de la bibliothèque est utilisée.
      Les versions du protocole sont décrites dans
      <a href="https://docs.openssl.org/master/man3/SSL_CTX_set_min_proto_version/" class="link external">&raquo;&nbsp;SSL_CTX_set_max_proto_version(3)</a>.
     </p>
     <p class="simpara">
      Disponible à partir de PHP 7.3.0 et OpenSSL 1.1.0.
     </p>
    </dd>
   
  </dl>
 </div>


 <div class="refsect1 changelog" id="refsect1-context.ssl-changelog">
  <h3 class="title">Historique</h3>
  <table class="doctable informaltable">
   
    <thead>
     <tr>
      <th>Version</th>
      <th>Description</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td>7.3.0</td>
      <td>
       Ajout de <code class="parameter">min_proto_version</code> et
       <code class="parameter">max_proto_version</code>. Requiert OpenSSL &gt;= 1.1.0.
      </td>
     </tr>

     <tr>
      <td>7.2.0</td>
      <td>
       Ajout de <code class="parameter">security_level</code>. Requiert OpenSSL &gt;= 1.1.0.
      </td>
     </tr>

     <tr>
      <td>7.0.0</td>
      <td>
       Ajout de <code class="parameter">alpn_protocols</code>. Requiert OpenSSL &gt;= 1.0.2.
      </td>
     </tr>

     <tr>
      <td>5.6.0</td>
      <td>
       Ajout de <code class="parameter">SNI_server_certs</code>.
      </td>
     </tr>

     <tr>
      <td>5.3.6</td>
      <td>
       Ajout de <code class="parameter">no_ticket</code>.
      </td>
     </tr>

    </tbody>
   
  </table>

 </div>


 <div class="refsect1 notes" id="refsect1-context.ssl-notes">
  <h3 class="title">Notes</h3>
  <blockquote class="note"><p><strong class="note">Note</strong>: 
   <p class="simpara">
    Vu que <code class="literal">ssl://</code> est un protocole sous-jacent pour
    les enveloppes <a href="wrappers.http.php" class="link"><code class="literal">https://</code></a> et
    <a href="wrappers.ftp.php" class="link"><code class="literal">ftps://</code></a>,
    toutes les options de contexte appliquées à <code class="literal">ssl://</code>
    seront également appliquées à <code class="literal">https://</code> et <code class="literal">ftps://</code>.
   </p>
  </p></blockquote>
  <blockquote class="note"><p><strong class="note">Note</strong>: 
   <p class="simpara">
    Afin que SNI (Server Name Indication) soit disponible, PHP doit
    être compilé avec OpenSSL 0.9.8j ou supérieur. La
    constante <strong><code><a href="openssl.constsni.php#constant.openssl-tlsext-server-name">OPENSSL_TLSEXT_SERVER_NAME</a></code></strong> permet de
    déterminer si SNI est supporté ou non.
   </p>
  </p></blockquote>
 </div>


 <div class="refsect1 seealso" id="refsect1-context.ssl-seealso">
  <h3 class="title">Voir aussi</h3>
  <ul class="simplelist">
   <li><a href="context.socket.php" class="xref">Options de contexte des sockets</a></li>
  </ul>
 </div>


</div><?php manual_footer($setup); ?>