Як я можу перевірити при завантаженні, що SSL-сервер сайту призначений для хоста, якому я довіряю?


1

Взагалі

Я хочу мати змогу встановити HTTPS-підключення до сайту, і під час переговорів із SSL переконайтесь, що:

  1. Cert є всіма силами для хоста, зазначеного в cert (не закінчився, підписаний довіреним CA), і

  2. Серт призначений для хоста, який я вказую (тобто я можу підключитися через 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 чи будь-що інше, хоча, що було б найбільш корисно, це (у порядку зменшення переваг):

  1. рішення bash / sh, використовуючи лише програми командного рядка, які зазвичай постачаються з дистрибутивами на основі RHEL,
  2. або рішення з використанням загальнодоступної скриптованої мови (Python, Perl, Ruby тощо) без бібліотечних залежностей, які потребують завантаження,
  3. або рішення, що використовує непідписану мову (C / C ++, Java, Haskell тощо), яка знову не потребує завантаження бібліотеки.

Перевірте ланцюжок сертифікатів
Ramhound

@Ramhound Це не зовсім проблема; На жаль, він не піддається опису, досить короткому для заголовка. Проблема полягає в тому, що cert діє для різних хостів, але я все-таки хочу це прийняти. Але з командного рядка, а не браузера.
Парфянський розстріл

Ви кажете, що cert призначений для * .redhat.com, але ви ніколи не говорите, до якого домену ви насправді підключаєтесь.
Скотт Чемберлен

@ScottChamberlain Я не вважав, що це буде доречно. Упущення було навмисним, якщо ви не працюєте на Redhat і не знаєте, що cert не використовується в інших областях, і в цьому випадку може виникнути занепокоєння.
Парфянський розстріл
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.