当用户登录我的网站时,我会将他重定向到https://URL。(https://www.gruppenunterkuenfte.de/anbieter-bereich.html?next=/#einloggen)
如果用户在其机器上设置了错误的日期(过去一年),则证书将被视为无效,因为证书从2012年1月3日开始颁发。
有了这个无效的证书,Safari和Chrome就可以接缝阻止从外部源加载的脚本。(例如:https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js),这会导致登录不起作用。
现在我的问题是,什么是解决这个问题的好办法?
- 在JS代码中发送服务器日期,并将其与JS进行比较,以确定用户的当前时间。如果差异超过24小时,则向用户显示警告以正确设置日期。但这对用户来说可能很烦人。。。也许他们没有改变它的特权
- 不要从外部域加载JS文件。然后证书仍然是无效的,但页面可以正常工作。然而,出于性能原因,我更喜欢从ajax.googleapis.com加载脚本
- 是否可以获得一个证书,该证书在用户设置的任何日期都有效
- 还有其他我没有想到的解决方案吗
如果你真的想的话,我想你可以做#1(预HTTPS),但正如dirkbonhomme所指出的,这可能不值得付出努力。
至于其他……不要做!
对于#2,如果他们加载了一个带有无效证书的页面,则出于安全考虑,所有赌注都将取消。为什么要麻烦加密呢?此外,你还训练用户只点击安全警告,这会降低整个互联网的安全性。人们已经非常愿意盲目地接受弹出窗口告诉他们的内容。这种行为会促进安全妥协、恶意软件分发等。
对于#3,不,据我所知不是。你不会想要这个的。过期证书的概念对于证书签名系统的完整性非常重要。由于大多数人不会更新他们的CRL(而且,令人费解的是,大多数浏览器似乎不会自动更新),因此检查证书过期是防止证书被盗或被泄露的最后一道防线。它为此类证书在野外活动的时间设置了上限。
对于#4…正确的解决方案是用户修复他们损坏的机器。很多方案都依赖于准确的时间,用户应该知道,如果时间更新不正确,事情就会崩溃。如果这对你的用户群来说是一个反复出现的问题,也许可以向他们介绍一个叫做NTP的小东西。