服务器上是否有https标头,或浏览器中的JavaScript方法是否允许我们检测用户何时故意绕过安全证书,或者是否有其他方式来检测和报告此类情况? (我们使用的是Linux / Apache / jQuery。)
Web上充满了常规跳过警告的方法,但是我还没有找到关于检测用户何时跳过它的一件事 - 只是70%的用户可怕的统计数据尽可能快地绕过警告。 (他们如何衡量?)
我们运营一个Web应用程序,让教师可以制作和管理测试。教师正在连接到未经授权的WiFi网络,获取无效的证书警告,并单击浏览器的“仍然接受”功能,这样他们即使拥有未经过身份验证的证书也可以访问我们的应用程序。我们希望了解这种情况发生的频率,以及执行此操作的人员以及停止此操作的进度。
我应该注意到,有些学校通过他们自己的服务器代理请求,并拥有自己的证书,我们对此也很满意 - 这是我们想要测量和缓解的“忽略并连接”连接,因为这些是学生正在设置的,无法访问自己的CA但可以充分访问懒惰的用户。
答案 0 :(得分:0)
不确定绕过HTTPS是什么意思。如果您的意思是他们可以在没有HTTPS的情况下访问您的URI,这意味着您需要在Apache的.htaccess,httpd.conf或default-ssl
配置文件中阻止HTTP访问。破碎的挂锁可能意味着许多不同的东西,因此不清楚你遇到了哪个问题。您可以在此处测试您的网站是否存在SSL安全问题:
https://www.ssllabs.com/ssltest/
修改强>:
您可以比较服务器和客户端上的SSL证书的fingerprint,以确保它们匹配(如果客户端能够获取指纹)。这应该可以防止伪造证书中的中间人攻击。
和here's an answer用于在服务器端执行此操作。听起来避免拦截的最佳方法是使用自己的证书对客户端进行身份验证。
答案 1 :(得分:0)
无法检测到这一点 - 用户是唯一一个可以看到挂锁是绿色并锁定或红色和破损的用户。
Firefox会执行此操作by extension和through xhtml,但截至目前,它是支持此操作的唯一浏览器。
答案 2 :(得分:0)
我在寻找HSTS。 Here is how it works and how to implement it.
TL; DR:Header add Strict-Transport-Security "max-age=15768000 includeSubDomains"
答案 3 :(得分:0)
确保客户端看到您发送的服务器证书的一种方法是使用客户端证书身份验证。使用客户端证书身份验证时,SSL / TLS握手的最后一步包括使用客户端私钥签名的所有握手消息的哈希值。
这样做的副作用是,如果客户端没有看到完全相同的服务器证书,则服务器将无法验证来自客户端的此签名哈希值。
这当然不一定意味着客户端检查证书应该具有(即证书是否可信并且属于客户端打算联系的服务器),但至少服务器有办法中间没有假证明。
HSTS(你提到)也有办法让客户强制执行这些检查(参见Section 8.4 of RFC 6797)。但是,它仅在客户端已经知道需要使用HSTS(作为预加载的主机或首次访问后)时才有效,当然还依赖于支持HSTS的客户端(browser support is still limited)。