Определить, загружена ли веб-страница с использованием ненадежного сертификата SSL в javascript - PullRequest
3 голосов
/ 15 января 2020

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

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

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

Поскольку это означает, что браузер ведет себя по-другому, я надеюсь, что его можно обнаружить, и я хотел бы убедиться, что ApplicationCache вообще пропускается, когда он не может


Я не хотел бы создавать отдельное SSL-соединение из JavaScript (у пользователя могут быть установлены сертификаты пользовательских ЦС и т. д. c.), а также не пытаться поймать исключение с ApplicationCache.

Ответы [ 2 ]

3 голосов
/ 15 января 2020

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

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

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

0 голосов
/ 27 января 2020

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

Да, это возможно, однако для него требуется больше, чем просто JavaScript на клиенте.

Вы можете настроить сервер, который берет ссылку https и возвращает действительный сертификат. Таким образом, с помощью команды JavaScript fetch вы можете проверить, является ли сертификат доверенным или действительным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...