<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/openssl.setup.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ru',
  ),
  'this' => 
  array (
    0 => 'openssl.installation.php',
    1 => 'Установка',
    2 => 'Установка',
  ),
  'up' => 
  array (
    0 => 'openssl.setup.php',
    1 => 'Установка и настройка',
  ),
  'prev' => 
  array (
    0 => 'openssl.requirements.php',
    1 => 'Требования',
  ),
  'next' => 
  array (
    0 => 'openssl.configuration.php',
    1 => 'Настройка во время выполнения',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ru',
    'path' => 'reference/openssl/configure.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="openssl.installation" class="section">
 <h2 class="title">Установка</h2>
 <p class="para">
  Для поддержки библиотеки OpenSSL в PHP необходимо скомпилировать библиотеку с опцией
  <strong class="option configure">--with-openssl</strong>.
 </p>
 <p class="para">
  Также библиотека OpenSSL устанавливает дополнительные требования для нормальной работы
  во время исполнения. Самое главное, библиотеке OpenSSL требуется доступ к генераторам случайных и
  псевдослучайных чисел; на большинстве систем Unix или Linux, это означает
  доступ к устройствам <code class="literal">/dev/urandom</code> или <code class="literal">/dev/random</code>.
 </p>
 <p class="para">
  Опция конфигурации <strong class="option configure">--with-system-ciphers</strong>
  заставляет PHP использовать системный список шифров вместо жёстко заданного по умолчанию.
 </p>
 <blockquote class="note"><p><strong class="note">Замечание</strong>: 
  <strong>Замечания для пользователей Win32</strong><br />
  <p class="para">
   Модуль работает в ОС Windows,
только когда системной переменной <var class="envar">PATH</var>
доступны <abbr title="Dynamic Link Library">DLL</abbr>-файлы.
Раздел <abbr title="Frequently Asked Questions">FAQ</abbr>
«<a href="faq.installation.php#faq.installation.addtopath" class="link">Как добавить PHP-каталог в переменную PATH в Windows</a>»
рассказывает, как это сделать. Не рекомендуют копировать DLL-файлы
из директории PHP в системную папку Windows, хотя это тоже решает проблему, поскольку системная
переменная <var class="envar">PATH</var> содержит путь к системной директории по умолчанию.
<em>Для работы модуля
в переменной <var class="envar">PATH</var> потребуются следующие файлы:</em> 
   <var class="filename">libeay32.dll</var> или начиная
   с OpenSSL 1.1 <var class="filename">libcrypto-*.dll</var>.
  </p>
  <p class="para">
   Дополнительно, если вы собираетесь использовать функции генерации
   ключей и подписи сертификатов, вам придётся установить в системе корректный
   файл <var class="filename">openssl.cnf</var>.
   Мы включили демонстрационный конфигурационный файл в бинарную
   поставку под win32. Он лежит в директории
   <var class="filename">extras/ssl</var>.
  </p>
  <p class="para">
   PHP будет искать файл <var class="filename">openssl.cnf</var> по следующей логике:
   <ul class="itemizedlist">
    <li class="listitem">
     <span class="simpara">Переменная окружения <code class="literal">OPENSSL_CONF</code>. Если установили, то
      должна содержать путь (включая имя файла) до конфигурационного файла.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">переменная окружения <code class="literal">SSLEAY_CONF</code>. Если установлена, то
      должна содержать путь (включая имя файла) до конфигурационного файла.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Поиск файла <var class="filename">openssl.cnf</var> будет выполняться по стандартному
      пути для сертификатов, который задали при компиляции DLL-библиотеки. Обычно файл задают
      как <var class="filename">C:\Program Files\Common Files\SSL\openssl.cnf</var> (x64)
      или <var class="filename">C:\Program Files (x86)\Common Files\SSL\openssl.cnf</var> (x86),
      или как <var class="filename">C:\usr\local\ssl\openssl.cnf</var> до PHP 7.4.0.
     </span>
    </li>
   </ul>
  </p>
  <span class="simpara">
   При установке требуется определить, устанавливать ли файл по стандартному
   пути или хранить файл в другом месте и задать путь к файлу через переменные окружения, что полезно
   на виртуальных хостах. Обратите внимание, что путь по
   умолчанию разрешается переопределить в скрипте через параметр
   <code class="parameter">options</code> функции, которой требуется этот файл.
  </span>
  <div class="caution"><strong class="caution">Предостережение</strong>
   <p class="simpara">
    Убедитесь, что непривилегированным пользователям не разрешено изменять файл <var class="filename">openssl.cnf</var>.
   </p>
  </div>
  <span class="simpara">
   C OpenSSL 3.0.0, который с PHP 8.2.0 используется в Windows по умолчанию,
   ряд алгоритмов устарел. Такие алгоритмы выходят из употребления,
   криптографическое сообщество признаёт такие алгоритмы небезопасными.
   Эти алгоритмы по-прежнему доступны через устаревшего поставщика —
   файл <var class="filename">extras/ssl/legacy.dll</var>; работу с поставщиком
   описывает раздел OpenSSL-руководства
   <a href="https://docs.openssl.org/master/man5/config/#Provider-Configuration" class="link external">&raquo;&nbsp;о конфигурации поставщика</a>.
  </span>
 </p></blockquote>

 <div class="simplesect">
  <h3 class="title">Список изменений</h3>
  <p class="para">
   <table class="doctable informaltable">
    
     <thead>
      <tr>
       <th>Версия</th>
       <th>Описание</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>7.4.0</td>
       <td>
        Опция конфигурации <strong class="option configure">--with-openssl[=DIR]</strong> больше не принимает
        аргумент каталога в пользу настройки переменной
        <var class="envar">PKG_CONFIG_PATH</var> команды pkg-config в положение OpenSSL
        или путём указания переменных <var class="envar">OPENSSL_LIBS</var>
        и <var class="envar">OPENSSL_CFLAGS</var>.
       </td>
      </tr>

      <tr>
       <td>7.4.0</td>
       <td>
        Конфигурационный путь библиотеки OpenSSL по умолчанию изменили с <var class="filename">C:\usr\local\ssl</var>
        на <var class="filename">C:\Program Files\Common Files\SSL</var> или
        <var class="filename">C:\Program Files (x86)\Common Files\SSL</var>, соответственно.
       </td>
      </tr>

     </tbody>
    
   </table>

  </p>
 </div>

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