Как я могу получить LWP, чтобы убедиться, что сертификат подключаемого мной сервера подписан доверенным органом и выдается правильному хозяину? Насколько я могу судить, он даже не проверяет, что сертификат утверждает, что для имени хоста я подключаюсь. Это похоже на серьезную проблему безопасности (особенно с недавними уязвимостями DNS).
Обновление: Получается, что я действительно хотел, был HTTPS_CA_DIR
, потому что у меня нет ca-bundle.crt. Но HTTPS_CA_DIR=/usr/share/ca-certificates/
сделал трюк. Я все равно отмечаю ответ, потому что он был достаточно близко.
Обновление 2: Оказывается, что HTTPS_CA_DIR
и HTTPS_CA_FILE
применяются только в том случае, если вы используете Net:: SSL в качестве базовой библиотеки SSL. Но LWP также работает с IO:: Socket:: SSL, который игнорирует эти переменные среды и с радостью разговаривает с любым сервером, независимо от того, какой сертификат он представляет. Существует ли более общее решение?
Обновление 3: К сожалению, решение по-прежнему не завершено. Ни Net:: SSL, ни IO:: Socket:: SSL не проверяет имя хоста на сертификат. Это означает, что кто-то может получить законный сертификат для какого-либо домена, а затем выдавать себя за любой другой домен без жалоб LWP.
Обновление 4: LWP 6.00 окончательно решает проблему. Подробнее см. мой ответ.