我们使用OAuth2进行RESTFul Web Api进行身份验证。使用自签名证书进行SSL / TLS加密是否可行?我们提供.Net / Java SDK,其中将忽略不是可信CA颁发的证书验证错误,因此除非他/她尝试直接从HTTP请求调用Api,否则客户不会看到任何错误。这个解决方案对我们来说很好,但有任何风险或缺点吗?
答案 0 :(得分:1)
验证证书是为了确保客户端正在与预期的服务器通信,即验证。 验证是在中间攻击中防御人类的重要部分,即针对流量路径中的攻击者进行嗅探和修改数据。
因此,虽然您可以使用自签名证书而不是由公共信任CA签名的证书,但仍需要正确验证证书,不要简单地禁用验证。对于自签名证书,这可以是通过检查证书的指纹或其公钥是否符合预期来完成。仅仅检查证书的主题是不够的,因为攻击者可以轻松地创建具有相同主题的证书并在攻击中使用它。
有关如何正确执行此操作(包括示例代码)的详细信息,请参阅OWASP: Certificate and Public Key Pinnning。