Для поддержки библиотеки 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
функции, которой требуется этот файл.ПредостережениеC OpenSSL 3.0.0, который с PHP 8.2.0 используется в Windows по умолчанию, ряд алгоритмов устарел. Такие алгоритмы выходят из употребления, криптографическое сообщество признаёт такие алгоритмы небезопасными. Эти алгоритмы по-прежнему доступны через устаревшего поставщика — файл extras/ssl/legacy.dll; работу с поставщиком описывает раздел OpenSSL-руководства » о конфигурации поставщика.Убедитесь, что непривилегированным пользователям не разрешено изменять файл openssl.cnf.
Версия | Описание |
---|---|
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, соответственно. |