Google app engine SSL与*.appspot.com绑定:我如何知道谷歌何时会更改他们的公钥?

Google app engine SSL与*.appspot.com绑定:我如何知道谷歌何时会更改他们的公钥?,google-app-engine,ssl,openssl,ssl-certificate,Google App Engine,Ssl,Openssl,Ssl Certificate,我有一个iOS应用程序即将在应用程序商店上线,该应用程序商店使用Google app Engine作为其服务器后端。捆绑在应用程序二进制文件中的是*.appspot.com。通配符证书允许我使用捆绑证书的公钥对任何HTTPS连接进行SSL固定。这有助于防止中间人攻击我的客户机/服务器通信 当我建立这个网站时,我知道谷歌在他们的*.appspot.com上循环使用。每一两个月发一次证书。然而,我希望appspot.com每月都使用相同的公钥,这样我的应用程序和服务器之间的通信就不会中断 然而,在最

我有一个iOS应用程序即将在应用程序商店上线,该应用程序商店使用Google app Engine作为其服务器后端。捆绑在应用程序二进制文件中的是*.appspot.com。通配符证书允许我使用捆绑证书的公钥对任何HTTPS连接进行SSL固定。这有助于防止中间人攻击我的客户机/服务器通信

当我建立这个网站时,我知道谷歌在他们的*.appspot.com上循环使用。每一两个月发一次证书。然而,我希望appspot.com每月都使用相同的公钥,这样我的应用程序和服务器之间的通信就不会中断


然而,在最新的证书中,在没有任何警告的情况下,谷歌已经更改了他们的公钥。现在,我的应用程序与我的服务器进行通信时是DOA。我尝试在*.appspot.com上使用SSL固定是错误的吗。证明书谷歌是否会在开发者更改公钥时通知他们?我应该在自定义域中使用我自己的证书吗?

一个有趣的巧合是,我刚刚在未来的一篇关于pinning的博客文章中做了第一次编辑(在其他职责中,我负责管理云技术支持博客文章),因此我对这一点毫无疑问:

我尝试在*.appspot.com上使用SSL固定是错误的吗。 证书

是的

谷歌是否会通知开发者他们何时会改变他们的目标 公钥

不,上面的是从哪里来的

我应该将自己的证书用于自定义域吗

是的,没错。更一般地说,仅锁定公钥您的控件是一种最佳做法

来自未来博文的其他建议是:你的应用程序中有一小部分用户不会更新——那么你怎么能对你的pin设置进行旋转呢?例如,如果5%的用户不更新,您是否同意将其删除?博客的建议是,如果应用程序知道它太旧,就让它绕过自己的锁定检查——比如说,如果系统时间比编译时烘焙到应用程序中的构建时间至少晚六周;至少,这样,非更新程序的“砌砖”是暂时的,而不是永久的

我怎么知道谷歌什么时候会更改他们的公钥

除非出现问题,否则谷歌不会更改其公钥。所以你应该锁定公钥

安全界发现,考虑到实践中的所有失败,关键连续性是一个重要属性。因此,安全社区中的一些人正在远离密钥轮换,转而支持密钥连续性

谷歌使用短期的终端实体/服务器证书(30天左右)来保持CRL的小型化(对于移动客户端尤其重要)。因此,您不应该锁定证书


然而,在最新的证书中,在没有任何警告的情况下,谷歌已经更改了他们的公钥

就我所知,这很奇怪。更改了什么公钥?是Google CA(Google Internet Authority G2)、公共CA(GeoTrust Gobal CA)还是终端实体证书

你可以阅读更多关于谷歌定位于的信息。一些谷歌安全工程师提供了他们的知识和意见


现在,我的应用程序与我的服务器进行通信时是DOA。我尝试在*.appspot.com上使用SSL固定是错误的吗。证书

我不认为你用钉住是错的。我怀疑这个问题与通配符证书或即将到来的证书有关

EV级别的(记录浏览器策略和过程的)禁止使用通配符证书,而Google是CA/B的成员(浏览器遵循CA/B论坛,而不像许多人怀疑的那样遵循IETF)

谷歌是否通过HPKP标题提供了滚动?(实际上,网络级SST/TLS固定不应依赖于应用层HPKP头)


现在这里有一些背景故事。。。IETF不久将发布RFC。所做的更改可能有助于与RFC和HPKP标题对齐。因此,在这种情况下,浏览器转向IETF进行标准化,而不是记录策略和过程的CA/B

不过,我觉得RFC有很多问题。我觉得您不应该将其作为安全控制,因为:

  • 它支持由于覆盖而进行的拦截
  • 它缺少关于断针的报告
有些是由于使用了不兼容的安全模型,有些是由于哲学。由于W3C的设计原则,所使用的安全模型存在无法协调的漏洞(特别是,请参阅)


您可以在IETF邮件列表上阅读有关我的异议的更多信息。

此问题似乎属于Stack Exchange网络中的另一个站点,因为它与编程或开发无关。也许你应该试试。如果你需要有人帮助对你的博客文章进行技术编辑,那么请让我知道我是否可以提供帮助。多年来,我一直使用钉扎作为安全控制。我对古特曼的也很熟悉。我不确定这是否是一个好策略:“博客的建议是,如果应用程序知道它太旧了,就让它绕过自己的锁定检查……”辩护,不要问(见古特曼的书)。noloader,gmail帐户。令人感兴趣的是,
公钥Pins
似乎已从AppEngine响应标题中删除,如中所述(我已为自己的应用程序验证了该问题)。可以将标题列为白名单(与HSTS一样),但无论如何,我都找不到官方对该政策的评论。。。。HPKP和HST一样,可以被列为白名单。