Последствия для безопасности отключения CURLOPT_SSL_VERIFYPEER (libcurl/openssl)

Из этой темы я знаю, какие атаки возможны, когда CURLOPT_SSL_VERIFYHOST отключен. Я хотел бы знать, какие атаки возможны, когда VERIFYPEER, а не _VERIFYHOST, отключен. Приемлем ли риск для платежей кредитными картами?

(я спрашиваю потому, что мой код работает только с отключенным _VERIFYPEER, хотя никто не знает почему)


person drake035    schedule 16.02.2013    source источник
comment
Если вы читаете мой ответ, на который вы ссылаетесь, он говорит: Чтобы сравнить его с реальным сценарием, VERIFYPEER похож на проверку того, что форма удостоверения личности является той, которую вы узнаете (т.е. паспорт из страны, которой вы доверяете, персонал карты от знакомой вам компании, ...). VERIFYHOST похож на проверку фактического имени на карточке, с которым вы хотели поговорить.. Извините, если это сформулировано недостаточно ясно, но если вы даже не проверите, доверяете ли вы полученному сертификату, должно быть совершенно очевидно, что вы вообще не можете полагаться на то, что говорит этот сертификат.   -  person Bruno    schedule 17.02.2013


Ответы (1)


Если вы отключите CURLOPT_SSL_VERIFYPEER, curl не будет проверять, действительно ли сертификат подписан доверенным центром. Это очень опасно! В ситуации MITM без VERIFYPEER злоумышленник может просто заменить настоящий сертификат своим "самозаверяющим" сертификатом, и если имя хоста совпадает (что он может всегда делать, так как он делает сертификат), ваше приложение примет его.

Ваш код, вероятно, дает сбой, потому что у вас не настроено хранилище сертификатов ЦС, а сервер, с которым вы общаетесь, подписан ЦС, не входящим в репозиторий curl по умолчанию. Попробуйте использовать CURLOPT_CAINFO или CURLOPT_CAPATH, чтобы указать сертификаты для проверки, и убедитесь, что сертификаты, которые вы используете для проверки, доступны и соответствуют сертификатам целевого сервера.

person nneonneo    schedule 16.02.2013
comment
Это сработало, спасибо! На самом деле у меня было CURLOPT_CAINFO =› dirname(FILE) . '/cacert.pem' в моем коде, только файл cacert.pem не существовал в моей папке. Поэтому я скачал его по адресу curl.haxx.se/docs/caextract.html и скопировал это в папке, теперь это работает! - person drake035; 20.02.2013