В веб-браузере для JavaScript действительно ли возможно получить информацию о Сертификате HTTPS, используемом для текущей страницы?

Существует ли метод для JavaScript, работающего в браузере для определения, какой сертификат CA используется, чтобы аутентифицировать удаленный хост к текущему Подключению HTTPS браузера и также получить свойства того сертификата, такие как название CA?

В противном случае есть ли какие-либо другие опции для того, чтобы программно получить эту информацию, такую как ActiveX, Java, CGI на стороне сервера...?

24
задан mikemaccana 10 January 2017 в 12:44
поделиться

3 ответа

Нет. Очевидно, вы могли бы сделать это с помощью AJAX / ActiveX / Java / Flash / Silverlight и настраиваемого серверного скрипта, но я не понимаю, зачем вам это нужно.


РЕДАКТИРОВАТЬ: Идея выше заключается в том, что вы должны сделать сетевой запрос (используя одну из вышеперечисленных технологий) к серверу и спросить, какой сертификат использовался для этого сетевого запроса. Затем сервер может проверить свою конфигурацию и ответить на вопрос.

Если браузер каким-то образом доверяет недействительному сертификату и подключается к неправильному серверу (например, серверу MITM), сервер может лгать. Когда механизм доверия браузера скомпрометирован, я не знаю, как этого избежать.

Насколько мне известно, нет способа (исключительно с использованием клиентских API) напрямую спросить браузер, какой сертификат он использует «для текущего SSL-соединения браузера». Даже Фордж этого не делает. Он создает полностью параллельный сеанс SSL, но не позволяет вам спрашивать о собственном сеансе SSL браузера.

3
ответ дан 29 November 2019 в 00:04
поделиться

AFAIK не только с Javascript. Но некоторые веб-серверы позволяют вам получить доступ к параметрам подключения потока или процесса. Затем серверный сценарий может отправлять эти значения вместе с запросом, и вы его используете.

Я нашел это для веб-сервера nginx: http://wiki.nginx.org/NginxHttpSslModule (посмотрите на переменные внизу страницы). Должна быть возможность установить их как переменные среды и передать их вашим процессам FastCGI или тому, что вы используете.

AOLServer / Naviserver предоставляет аналогичный доступ с модулем nsssl.

1
ответ дан 29 November 2019 в 00:04
поделиться

JavaScript, запущенный в веб-браузере, не имеет доступа к информации о сертификате. Информация о сертификате также не передается в приложение по протоколу HTTP. Мое исследование показывает, что у веб-приложения нет способа определить, внедрила ли атака «злоумышленник в середине» поддельный сертификат где-то между хостом и клиентом.

2
ответ дан 29 November 2019 в 00:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: