Мне нужно открыть удаленные ресурсы, которые подписаны центром сертификации частной компании. Прямо сейчас, PHP не будет открывать ресурсы, потому что он не доверяет подписавшему сертификат.
Я знаю, что вы можете создавать сертификаты с помощью объекта потокового контекста, но я ищу способ дать PHP открытый ключ нового центра сертификации и получить file()
и аналогичные методы доверяют удаленным сертификатам, подписанным этим органом без необходимости создавать потоковый контекст каждый раз.
Есть ли способ добавить новый центр сертификации в php.ini? Я попытался добавить открытый ключ CA в /etc/ssl/certs/
, но это, кажется, не признается.
Curl использует один файл со всеми CA в нем. Чтобы добавить новый CA в Curl / PHP, вам нужно получить полный пакет, добавить свой сертификат в пакет, а затем указать PHP использовать собственный пакет.
/etc/ssl/certs/cacert.pem
:curl --remote-name --time-cond cacert.pem https://curl.haxx.se/ca/cacert.pem
Изменить /etc/ssl/certs/cacert.pem
файл, и добавьте ваш новый открытый ключ CA в нижней части.
редактировать php.ini
и добавьте строку openssl.cafile=/etc/ssl/certs/cacert.pem
наверх (или вниз).
Перезапустите веб-сервер.
Других решений пока нет …