Если CURLOPT_SSL_VERIFYPEER имеет значение false, передача данных более не безопасна? - PullRequest
11 голосов
/ 11 января 2011

Недавно я столкнулся с проблемой отправки данных на сервер, сертификат SSL которого был обновлен. Я провел некоторое исследование и обнаружил, что когда для CURLOPT_SSL_VERIFYPEER установлено значение false, дата публикации проходит успешно. Может кто-нибудь объяснить связь между CURLOPT_SSL_VERIFYPEER и _VERIFYHOST? Кроме того, если для параметра VERIFYPEER задано значение false, я больше не передаю данные по безопасному соединению?

Огромное спасибо за любую помощь, которую может оказать каждый.

Ответы [ 3 ]

19 голосов
/ 11 января 2011

Соединение все еще будет зашифровано SSL. Вы просто не будете делать это по ссылке, которая использует проверенные как правильные сертификаты. Любой может создать себе сертификат SSL, который будет обеспечивать совершенно приемлемое шифрование на любом уровне, поддерживаемом вашим браузером и веб-сервером.

Однако вы получите множество жалоб на невозможность проверить подлинность сертификата. Это сделано для того, чтобы Джо М. Аакли не мог создать себе сертификат, который называется «microsoft.com», и настроить собственный узел Windows Update. Сертификат скажет, что это microsoft.com, но он не может быть аутентифицирован как фактически microsoft.com, поскольку Verisign (или кто-либо другой) фактически не выдал этот сертификат и не поставил на нем свой собственный штамп подлинности (подписи сертификата). *

_VERIFYHOST предназначен для проверки того, что имя хоста URL-адреса, к которому вы подключаетесь (например, «microsoft.com»), указано в сертификате SSL. Если для этой опции задано значение false, несоответствия имен хостов url / cert будут игнорироваться (скажем, у вас есть ящик для разработки на testbox.develhost.com, но вы используете действительный сертификат вашего клиента example.com).

_VERIFYPEER отключает проверку всего сертификата. Это позволяет самоподписанным сертификатам работать. В противном случае в библиотеке SSL будет указано, что издатель сертификата недействителен.

Но независимо от того, какой из параметров вы установили через соединение, оно будет зашифровано по протоколу ssl.

1 голос
/ 28 мая 2013

Я хотел бы уточнить о связи между _VERIFYHOST и _VERIFYPEER из моего тестирования.

_VERIFYHOST проверка общего имени (CN), как указано в руководстве, зависит от варианта 1 или 2. Эта проверка только проверяет и генерирует сообщение об ошибке, если произошел сбой Сама проверка никак не влияет на соединение, даже возникает ошибка проверки. Это результат, используемый _VERIFYPEER для обрезки или продолжения соединения.

_VERIFYPEER (1) отметьте 2 вещи. Во-первых, он проверяет сертификат с CAINFO. если CAINFO указать в параметре curl, он проверяет это значение, в противном случае он проверяет значение, указанное в php.ini. Во-вторых, он проверяет результат из _VERIFYHOST (для случая установите _VERIFYHOST в 1 или 2). Если проверка прошла оба условия, соединение будет продолжено. В противном случае соединение будет разорвано.

0 голосов
/ 07 июня 2014

Если вы отключите CURLOPT_SSL_VERIFYPEER, проверка сертификата не будет выполнена (и значение CURLOPT_SSL_VERIFYHOST игнорируется). В результате это делает вас незащищенными от атак «человек посередине». Это означает, что вы больше не передаете данные по защищенному соединению.

Да, данные зашифрованы, но они по-прежнему не защищены. Вы знаете, что отправляете кому-то 1004 *, но не знаете, кто; возможно, вы отправляете его заклятому врагу пользователя (тщательно его зашифровывая, чтобы никто, кроме злоумышленника, не смог прочитать данные). Это плохо. Все шифрование в мире не очень хорошо, если вы шифруете его с помощью открытого ключа злоумышленника.

Итог: не отключать CURLOPT_SSL_VERIFYPEER. Это оставляет вас в безопасности.

См. Последствия для безопасности при отключении CURLOPT_SSL_VERIFYHOST (libcurl / openssl) для получения дополнительной информации о том, что вам нужно сделать для безопасного использования поддержки cURL SSL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...