Как мне сохранить мой cacert.pem актуальным по соображениям безопасности при использовании curl?

StackOverflow https://stackoverflow.com//questions/23032165

Вопрос

Я хотел бы сохранить мои корневые сертификаты актуальными для использования с внутренними cURL и PHP curl команда, однако в настоящее время нет параметра для загрузки текущего файла, необходимого для надлежащего безопасного подключения и поддержания его актуальности.

И пример использования 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 для связи с другими серверами я могу продолжать это делать безопасно .

Это не запрос на внешний ресурс или ссылку за пределы сайта и т.д., Однако из-за характера проблемы, вероятно, это может быть единственным способом решить эту проблему, поскольку это потребует постоянного обновления по мере отзыва цепочек сертификатов.На сегодняшний день нет способа получить этот файл ни как часть дистрибутива самого curl, ни php, ни библиотеки curl для php и продолжать его поддерживать.Хотя обескураживает тот факт, что это не то, что нравится простой команде обновления curl --update-root-ca было бы неплохо, но его не существует ни в какой форме.

Это было полезно?

Решение

С момента первоначального написания этой статьи (и, следовательно, этого переписывания) я смог решить свою собственную проблему, включив ссылки непосредственно на только законный источник для ведения этого файла, который предоставляется на сайте, поддерживаемом автором curl около это место

Кроме того, по мере развития технологий этот вопрос был обновлен, чтобы показать, как использовать curl в PHP и принудительно подключите TLS версии 1.2 (что-то, что требуют или рекомендуют некоторые поставщики транзакций и могут не предоставлять информацию о том, как это сделать).

Что касается центров сертификации, то существует несколько ключевых корневых центров, таких как :

  • Symantec
  • Быстрый рост
  • оттаивать
  • ГеоТруст
  • Комодо

А также другие органы власти по своей природе, такие как

  • Microsoft
  • Мозилла
  • Гугл

Который может стать основой для любого, кто хочет поддерживать свой собственный cacert.pem.Имейте в виду, что вам нужно будет загрузить их списки отзыва (сертификаты, которые были взломаны или срок действия которых истек) из соответствующих списков сертификации, чтобы поддерживать надлежащий механизм доверия, в то время как вам должно сойти с рук простое скачивание их цепочек корневых сертификатов и использование их в качестве локального файла авторизации в качестве вашего cacert.пэм.

Другие советы

cacert.pem используется curl.Не существует окончательного органа, которому следует доверять сертификаты, но списки, используемые веб-браузерами, являются хорошим источником.Эти списки постоянно обновляются в связи с изменениями в центрах сертификации и методах обеспечения безопасности.

Авторы curl поддерживайте инструмент, который может извлекать cacert.pem из Firefox и размещают достаточно актуальную информацию на своем сайте:

  • cacert.pem сгенерировано авторами curl
  • извлекать:для тех, кто больше всего заботится о безопасности, скачайте инструмент, проверьте исходный код и запустите его в вашем собственном Firefox.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top