Ответ 1
-
CURLOPT_SSL_VERIFYPEER проверяет, что удаленный сертификат действителен, т.е. вы доверяете, что он был выпущен CA, которому вы доверяете, и что он подлинный.
-
CURLOPT_SSL_VERIFYHOST проверяет, что сертификат был отправлен сущности, с которой вы хотели поговорить.
Чтобы сравнить это с реальным сценарием, VERIFYPEER похож на проверку того, что форма идентификатора является той, которую вы признаете (например, паспорт из страны, которой вы доверяете, персональная карточка от известной вам компании...). VERIFYHOST похож на проверку фактического имени на совпадении карт, с которым вы хотели поговорить.
Если вы не используете VERIFYHOST (правильное значение равно 2, а не 1, btw), вы отключите проверку имени хоста и откройте дверь для атак MITM: любой, у кого есть идентификатор, которому вы доверяете, может олицетворять любого в рамках набора идентификаторов, которым вы доверяете, например любой, у кого есть действующий паспорт, может притвориться, что они - кто-то еще с действующим паспортом.