【问题标题】:JS not working due to invalid SSL Certificate, when user changes his system date当用户更改其系统日期时,由于 SSL 证书无效,JS 无法工作
【发布时间】:2012-02-24 01:04:51
【问题描述】:

当用户登录我的网站时,我会将他重定向到 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),导致无法登录。

现在我的问题是,什么是解决这个问题的好方法?

  1. 在 JS 代码中发送服务器日期,并将其与 JS 与用户当前时间进行比较。如果相差超过 24 小时,请向用户显示正确设置日期的警告。但这对用户来说可能很烦人......也许他们没有更改它的权限。
  2. 不要从外部域加载 JS 文件。那么证书仍然是无效的,但页面会起作用。不过,出于性能原因,我更喜欢从 ajax.googleapis.com 加载脚本。
  3. 是否可以获得在用户设置的任何日期都有效的证书?
  4. 还有其他我没有想到的解决方案吗?

【问题讨论】:

  • 这真的是个问题吗?我的意思是,有多少用户的系统日期设置错误?寻找解决方案可能不值得投资 imo。
  • 嗯,我的老板有,这就是问题所在 :-) 我认为如果日期是当前日期,某些应用程序许可证已过期。
  • 所以解决方案 1 被排除。你是对的 2,继续从谷歌 CDN 加载。关于 3,不要认为没有开始日期或当前日期之前的日期就可以获得证书。所以 4 是:告诉你的老板更新他的执照 =)
  • 尊敬的,您的老板应该有诚信为他/她的软件付费(如果许可证需要)或停止使用它。如果这不是一个选项,那么您会遇到比错误日期更大的问题。
  • @Conrad Shultz:我完全同意。虽然我不知道这是否是肯定的原因。它只是我能想到的唯一一件事,为什么人们可能想要一个旧的系统日期。仍然可能有更多用户设置了旧系统日期。

标签: php javascript ssl cross-domain


【解决方案1】:

如果你真的愿意,我想你可以做 #1(HTTPS 之前),但正如 dirkbonhomme 所说,这可能不值得。

至于其他......不要这样做!

对于 #2,如果他们加载的页面带有无效证书,则出于安全考虑,所有赌注都将失败。为什么要麻烦加密呢?另外,您正在培训您的用户只需点击安全警告,这会降低整体 Internet 安全性。人们已经方式太愿意盲目地接受弹出窗口告诉他们的内容。然后,此行为会促进安全妥协、恶意软件分发等。

对于#3,不,据我所知。你不会想要这个。过期证书的概念对于证书签名系统的完整性很重要。由于大多数人不会更新他们的 CRL(而且令人费解的是,大多数浏览器似乎都不会自动更新),因此检查证书过期是防止证书可能被盗或以其他方式受损的最后一道防线。它为此类证书在野外可以保持活跃的时间设定了上限。

对于#4...正确的解决方案是让用户修复他们损坏的机器。很多方案都依赖于准确的时间,用户应该知道如果时间没有正确更新,事情就会中断。如果这对您的用户群来说是一个反复出现的问题,不妨向他们介绍一个名为 NTP 的小东西。

【讨论】:

    猜你喜欢
    • 2015-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-24
    • 2022-10-19
    • 1970-01-01
    • 1970-01-01
    • 2017-04-20
    相关资源
    最近更新 更多