Установка

Для поддержки библиотеки OpenSSL в PHP необходимо скомпилировать библиотеку с опцией --with-openssl.

Также библиотека OpenSSL устанавливает дополнительные требования для нормальной работы во время исполнения. Самое главное, библиотеке OpenSSL требуется доступ к генераторам случайных и псевдослучайных чисел; на большинстве систем Unix или Linux, это означает доступ к устройствам /dev/urandom или /dev/random.

Опция конфигурации --with-system-ciphers заставляет PHP использовать системный список шифров вместо жёстко заданного по умолчанию.

Замечание: Замечания для пользователей Win32

Модуль работает в ОС Windows, только когда системной переменной PATH доступны DLL-файлы. Раздел FAQ «Как добавить PHP-каталог в переменную PATH в Windows» рассказывает, как это сделать. Не рекомендуют копировать DLL-файлы из директории PHP в системную папку Windows, хотя это тоже решает проблему, поскольку системная переменная PATH содержит путь к системной директории по умолчанию. Для работы модуля в переменной PATH потребуются следующие файлы: libeay32.dll или начиная с OpenSSL 1.1 libcrypto-*.dll.

Дополнительно, если вы собираетесь использовать функции генерации ключей и подписи сертификатов, вам придётся установить в системе корректный файл openssl.cnf. Мы включили демонстрационный конфигурационный файл в бинарную поставку под win32. Он лежит в директории extras/ssl.

PHP будет искать файл openssl.cnf по следующей логике:

  • Переменная окружения OPENSSL_CONF. Если установили, то должна содержать путь (включая имя файла) до конфигурационного файла.
  • переменная окружения SSLEAY_CONF. Если установлена, то должна содержать путь (включая имя файла) до конфигурационного файла.
  • Поиск файла openssl.cnf будет выполняться по стандартному пути для сертификатов, который задали при компиляции DLL-библиотеки. Обычно файл задают как C:\Program Files\Common Files\SSL\openssl.cnf (x64) или C:\Program Files (x86)\Common Files\SSL\openssl.cnf (x86), или как C:\usr\local\ssl\openssl.cnf до PHP 7.4.0.

При установке требуется определить, устанавливать ли файл по стандартному пути или хранить файл в другом месте и задать путь к файлу через переменные окружения, что полезно на виртуальных хостах. Обратите внимание, что путь по умолчанию разрешается переопределить в скрипте через параметр options функции, которой требуется этот файл.
Предостережение

Убедитесь, что непривилегированным пользователям не разрешено изменять файл openssl.cnf.

C OpenSSL 3.0.0, который с PHP 8.2.0 используется в Windows по умолчанию, ряд алгоритмов устарел. Такие алгоритмы выходят из употребления, криптографическое сообщество признаёт такие алгоритмы небезопасными. Эти алгоритмы по-прежнему доступны через устаревшего поставщика — файл extras/ssl/legacy.dll; работу с поставщиком описывает раздел OpenSSL-руководства » о конфигурации поставщика.

Список изменений

Версия Описание
7.4.0 Опция конфигурации --with-openssl[=DIR] больше не принимает аргумент каталога в пользу настройки переменной PKG_CONFIG_PATH команды pkg-config в положение OpenSSL или путём указания переменных OPENSSL_LIBS и OPENSSL_CFLAGS.
7.4.0 Конфигурационный путь библиотеки OpenSSL по умолчанию изменили с C:\usr\local\ssl на C:\Program Files\Common Files\SSL или C:\Program Files (x86)\Common Files\SSL, соответственно.