Определить, была ли загружена веб-страница с использованием ненадежного SSL-сертификата в JavaScript

Есть ли способ определить в javascript, был ли сайт загружен по HTTPS с использованием ненадежного сертификата SSL? Т.е. это недействительный / просроченный / самозаверяющий SSL-сертификат.

window.isSecureContext не указывает на это, это true во всех случаях, которые я пробовал самостоятельно и на badssl.com, если страница загружается по HTTPS.

В моем случае я пытаюсь использовать ApplicationCache, но он отказывается работать: в Chrome запускается обратный вызов error с сообщением error исключении «Manifest fetch failed (9)» , в Firefox происходит сбой без вывода сообщений.

Моя первоначальная цель - полностью пропустить ApplicationCache через незащищенное соединение.

Всего 1 ответ


Веб-страница не может загружаться через ненадежный сертификат SSL. Он может загружаться через сертификат, который не является публично доверенным, но в котором пользователь явно добавил исключение, что означает, что пользователь доверяет сертификату.

Похоже, вы хотите узнать, загружен ли ваш сайт другим сертификатом, чем тот, который предоставляет ваш сервер, т. Е. Если между клиентом и вашим сервером находится какой-то активный человек, например, перехватывающий SSL прокси-сервер компании или локальный антивирусный продукт , Для этого вам нужно знать детали сертификата и сравнивать их с вашими ожиданиями. К сожалению, это невозможно из чистого Javascript.

Подробнее об этом см. В веб-браузере, может ли JavaScript получить информацию о сертификате HTTPS, используемом для текущей страницы? , Есть ли способ получить детали сертификата SSL с помощью JavaScript? , Для альтернативного подхода обнаружения MITM на стороне сервера см. Обнаружение человека в середине на стороне сервера для HTTPS или Обнаружение перехвата HTTPS (с веб -сервером caddy) .


Есть идеи?

10000