2015-03-06 5 views
0

Есть ли заголовок https на сервере или метод JavaScript в браузере, который позволит нам обнаружить, когда пользователь намеренно обошел сертификат безопасности или каким-либо другим способом обнаружения и сообщить об этой ситуации? (Мы используем Linux/Apache/JQuery.)Обнаруживать, когда пользователи сознательно обходят ошибки сертификата сервера https

Веб наполнен способами обычно пропустить предупреждение, но я не смог найти одну вещь об обнаружении, когда пользователи пропустить это - просто что 70% пользователей обходят предупреждение так быстро, как только могут. (Как они измеряют это?)

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

Я должен отметить, что есть школы, которые прокси запрашивают через свой сервер, с их собственным сертификатом, и мы в порядке с этим - это «игнорирование и подключение в любом случае», которые мы хотим измерить и смягчить, поскольку эти это те, которые учащиеся настраивают, не имея доступа к собственному ЦС, но доступ к ленивым пользователям.

+0

Я закрываю это. Ответ, похоже, «нет способа обнаружить это». Позор. Клиент должен иметь возможность обойти безопасность, но сервер также должен отказаться от обслуживания. Если мы можем отказаться от обслуживания в Internet Explorer 8, то мы должны быть в состоянии отказаться от использования явно скомпрометированных соединений. Но я оставлю это в комитетах по стандартам. – JTW

+0

Я искал HSTS. [Вот как это работает и как его реализовать.] [1] TL; DR: 'Header add Strict-Transport-Security" max-age = 15768000 includeSubDomains "' [1]: https: // www .imperialviolet.org/2012/07/19/hope9talk.html – JTW

ответ

0

Не уверен, что вы подразумеваете под обход HTTPS. Если вы имеете в виду, что они могут посещать ваш URI без HTTPS, это означает, что вам нужно заблокировать доступ HTTP в файлах конфигурации .htaccess, httpd.conf default-ssl. Сломанный замок может означать несколько разных вещей, поэтому неясно, какая у вас проблема. Вы можете проверить свой сайт на проблемы безопасности SSL здесь:

https://www.ssllabs.com/ssltest/

Edit:

Вы можете сравнить fingerprint сертификата SSL на сервере и на клиенте, чтобы убедиться, что они совпадают (если клиент может получить отпечаток пальца). Это должно предотвращать атаки «человек-в-середине» с фиктивными сертификатами.

Article

и here's an answer для этого на стороне сервера вещей. Похоже, лучший способ избежать перехвата - проверить подлинность клиента с помощью собственного сертификата.

+0

Я разъяснил свой вопрос, чтобы объяснить, что они, похоже, подключаются к несанкционированным сетям WiFi, получают недопустимые предупреждения сертификатов и щелкают по функции «принять в любом случае» браузера, чтобы они могли обратитесь к нашему приложению. HTTP уже давно заблокирован. – JTW

+0

@JTW Вы можете прочитать отпечаток сертификата SSL в клиентском веб-приложении? Если это так, вы можете сказать серверу, если два отпечатка пальца не совпадают. –

+0

Да, использование SSL-отпечатка пальца будет работать, но JavaScript, похоже, не подходит для этого. В статье [Gibson Research article] (https://www.grc.com/fingerprints.htm) вы упомянули, что пользователь использует диалог безопасности браузера, но это снова ставит бремя на конечного пользователя. [Stack Exchange] (http://stackoverflow.com/questions/18689724/get-fingerprint-of-current-pages-ssl-certificate-in-a-chrome-extension) даже озадачен. – JTW

0

Невозможно обнаружить это - пользователь является единственным, кто может видеть, что замок замкнут зеленым, заблокированным или красным и сломанным.

Firefox сделает это by extension и through xhtml, но на данный момент это единственный браузер, поддерживающий это.

0

Один из способов, чтобы убедиться, что клиент видел сертификат сервера вы послали использовать аутентификацию клиента сертификат. Одним из последних шагов рукопожатия SSL/TLS при использовании аутентификации клиентского сертификата является хэш всех сообщений подтверждения, подписанных с закрытым ключом клиента.

Побочным эффектом этого является то, что если клиент не увидел тот же сертификат сервера, сервер не сможет проверить этот подписанный хеш, исходящий от клиента.

Это, конечно, не обязательно означает, что клиент проверил сертификат, как он должен был (то есть, был ли доверен сертификат и принадлежал серверу, к которому должен был обратиться клиент), но, по крайней мере, нет поддельного сертификата в середине.

HSTS (что вы упомянули) также позволяет клиенту выполнить эти проверки (см. Section 8.4 of RFC 6797). Однако он работает только в том случае, если клиент уже знает, что HSTS необходимо использовать (либо в качестве предварительно загруженного хоста, либо после первого посещения), и, конечно же, полагается на клиента, поддерживающего HSTS (browser support is still limited).