我有一个通过HTTPS运行的OAuth2 api。由于OAuth2依赖于HTTPS的安全性(不执行任何自己的签名),因此我在开发人员文档中添加了一条说明,鼓励开发人员确保他们在客户端应用程序中验证ssl证书。
我注意到有些应用会公开crt文件或将其包含在客户端中:https://github.com/stripe/stripe-ruby/tree/master/lib/data
我认为这只是为了确保它使用正确的证书(而不是任何系统安装的证书)?如果是这样,最好让您的API页面上的开发人员公开此crt文件,以及生成此文件的简单命令/方式是什么?
谢谢!
答案 0 :(得分:2)
当一个人以这种方式公开证书时,他鼓励客户对证书进行二进制比较,即通过构建证书链并验证证书来证明证书不是按照相应标准定义的方式),而只是通过比较提供的证书与存储在客户端的那个。
这种方法在几个方面被打破:
因此,无论是服务器所有者还是客户端,包含证书和“直接”使用此类证书都没有意义。
二进制比较适用的唯一情况是使用自签名证书时(在这种情况下,构建和验证链不起作用)。但在任何情况下,自签名证书都是一个坏主意(由于上面列出的原因和其他一些原因)。