Взагалі
Я хочу мати змогу встановити HTTPS-підключення до сайту, і під час переговорів із SSL переконайтесь, що:
Cert є всіма силами для хоста, зазначеного в cert (не закінчився, підписаний довіреним CA), і
Серт призначений для хоста, який я вказую (тобто я можу підключитися через HTTPS до example1.com, але я просто хочу перевірити, чи підтримується cert, який використовує example1.com, для example4.com, оскільки я вірю, що example4.com не був компрометований).
Конкретно
Існує сайт, пов’язаний з redhat, який використовує сертифікат, дійсний для * .redhat.com, але який не входить до домену redhat.com. У будь-якому іншому випадку цей сертифікат є дійсним (тобто його видає довірений КА, його термін дії не закінчився, і я 99,99% впевнений, що його не вкрали, хоча, якби це було, це означатиме, що Redhat був порушений, так У мене виникнуть більші проблеми), і я хочу завантажити модуль RPM з цього сайту, хоча (сподіваюся) гарантую, що я не був MITM'd.
Отже, я хочу завантажити щось із прикріпленого redhat example.com, перевіряючи, що веб-сайт, до якого я підключаюсь, фактично використовує дійсну redhat cert.
Що я вже спробував:
curl
- найближчим завитком до цієї функціональності є прапор цього параметра , який просто вимикає всю автентифікацію сертифікатів, що не є тим, що я хочу, і
wget
- просто є --no-check-certificate
варіант без аргументів , що так само не є корисним.
Відповідно до документації libcurl, я міг би скористатися цим , що виглядає багатообіцяючим, але згадується, що він вимагає, щоб я мав "... нетривіальний обсяг знань про бібліотеки opensl", якими я, очевидно, не володію. Я можу програмувати на C або Python чи будь-що інше, хоча, що було б найбільш корисно, це (у порядку зменшення переваг):
- рішення bash / sh, використовуючи лише програми командного рядка, які зазвичай постачаються з дистрибутивами на основі RHEL,
- або рішення з використанням загальнодоступної скриптованої мови (Python, Perl, Ruby тощо) без бібліотечних залежностей, які потребують завантаження,
- або рішення, що використовує непідписану мову (C / C ++, Java, Haskell тощо), яка знову не потребує завантаження бібліотеки.