Для поддержки OpenSSL в PHP вам необходимо скомпилировать его с опцией --with-openssl[=DIR].
Также библиотека OpenSSL имеет дополнительные требования для нормальной работы во время исполнения. Самое главное, OpenSSL требуется доступ к генераторам случайных и псевдослучайных чисел; на большинстве систем Unix/Linux, это означает доступ к устройствам /dev/urandom
или /dev/random
.
Опция конфигурации --with-system-ciphers заставляет PHP использовать системный список шифров вместо жёстко заданного по умолчанию.
Замечание: Замечания для пользователей Win32
Чтобы модуль работал, системной переменной PATH, которую содержит операционная система Windows, дают доступ к 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), или до PHP 7.4.0, как C:\usr\local\ssl\openssl.cnf.
options
функции, которой требуется этот файл.ПредостережениеУбедитесь, что непривилегированным пользователям не разрешено изменять openssl.cnf.
Версия | Описание |
---|---|
7.4.0 | Конфигурационный путь OpenSSL был изменён с C:\usr\local\ssl на C:\Program Files\Common Files\SSL или C:\Program Files (x86)\Common Files\SSL, соответственно. |