0

我有一个通过 HTTPS 运行的 OAuth2 api。由于 OAuth2 依赖于 HTTPS 的安全性(不做任何自己的签名),我在开发人员文档中添加了一条注释,鼓励开发人员确保他们在其客户端应用程序中验证 ssl 证书。

我注意到一些应用程序使 crt 文件公开可用或将其包含在他们的客户端中:https ://github.com/stripe/stripe-ruby/tree/master/lib/data

我认为这只是为了确保它使用正确的证书(而不是任何系统安装的证书)?如果是这样,在您的 API 页面上向开发人员公开此 crt 文件是否是一个好主意,以及生成此文件的简单命令/方法是什么?

谢谢!

4

1 回答 1

2

当一个人以这种方式公开证书时,他鼓励客户对证书进行二进制比较,即不是以相应标准定义的方式通过构建证书链并验证它们来验证证书),而是简单地将提供的证书与证书进行比较存储在客户端中。

这种方法在几个方面被打破:

  1. 二进制比较不会让客户端知道证书已被吊销
  2. 通过二进制比较,服务器证书的更改将需要更新所有客户端,以便将新证书包含在其中。升级失败将意味着无法连接。

因此,包含证书和“直接”使用此类证书是没有意义的,对服务器所有者和客户端都没有意义。

二进制比较适用的唯一情况是使用自签名证书时(在这种情况下,构建和验证链将不起作用)。但是在任何情况下,自签名证书都是一个坏主意(由于上面列出的原因和其他一些原因)。

于 2012-08-31T08:02:41.657 回答