Я хотел бы сохранить текущие корневые сертификаты для использования с внутренней командой tUR > cURL и PHP, однако в настоящее время нет параметра для загрузки текущего файла, который требуется для надлежащего безопасного соединения, и для поддержания его актуальности.
И пример использования curl
в PHP для безопасного подключения, для которого требуется файл с именем cacert.pem
(цепочка сертификатов, закодированная PEM для проверки удаленных подключений), выглядит следующим образом:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://www.google.com");
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($ch, CURLOPT_CAINFO, "pathto/cacert.pem");
curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);
if (!($data = curl_exec($ch))) {
echo "No data received";
} else {
echo strlen($data) + " total byte(s)";
}
curl_close($ch);
В то время как большинство людей просто устанавливают CURLOPT_SSL_VERIFYPEER
в false и, таким образом, игнорируют проблему, которая является плохим. Вы можете видеть здесь, где центр сертификации показывает, что если у вас нет текущего файла, единственный способ подключиться к защищенному серверу - отключить проверку сертификатов и далее предупреждает о последствиях, связанных с отключением проверки сверстников.
Я запрашиваю законный способ поддерживать локальную копию cacert.pem
, поэтому, когда я использую curl
в PHP для связи с другими серверами, я могу продолжать делать это безопасно.
Это не запрос для внешнего ресурса или ссылки за пределами сайта и т.д., однако из-за характера проблемы вполне вероятно, что это может быть ТОЛЬКО способ разрешить это, поскольку это потребует постоянного обновления, поскольку цепи сертификатов отозвана. На сегодняшний день невозможно получить этот файл как часть распределения самого скручивания, php или библиотеки curl для php и продолжать поддерживать его. Хотя это обескураживает, что это не то, что простая команда обновления, такая как curl --update-root-ca
, будет приятной, она не существует в какой-либо форме.