Key Vault 中的证书身份验证

Certificate Authentication in Key Vault

我有一些秘密想保存在 Azure Key Vault 中。我知道我可以使用客户端 ID 和证书通过 Key Vault 进行身份验证,而不是按照以下步骤使用客户端和密码:

  1. 获取或创建证书
  2. 将证书与 Azure AD 应用程序相关联
  3. 将代码添加到您的应用程序以使用证书

大多数示例使用 makecert 或 New-SelfSignedCertificate 来创建证书。在这种情况下,自签名证书对于生产应用程序是否有问题?这仅适用于使用 Azure Key Vault 进行身份验证的应用程序,客户端不会在浏览器中看到它。

如果在这种情况下仍然不赞成自签名证书,那么从受信任的机构购买证书是否与购买 SSL/TLS 证书的过程相同?还是同类型的证书?

使用自签名证书(有一些注意事项)本质上没有错。从纯加密的角度来看,购买证书和自签名证书之间没有区别。唯一的区别在于,购买的证书已由一个或多个证书颁发机构 (CA) 签署,这些证书颁发机构使用大多数 browsers/operating systems/etc 分发其 public 密钥。这意味着用户可以更加相信购买的证书是合法的,而他们必须采取信心的飞跃来接受自签名证书。

但是,在您的情况下,您似乎能够控制客户端应用程序,实际用户永远不会看到该证书。因此,您可以放心地使用自签名证书,只要您采取预防措施以防止中间人攻击(即有人生成自己的自签名证书并假装是您。)。最有效的方法之一是通过证书固定。本质上,您将证书的 public 密钥与客户端应用程序一起发送,并且您的客户端应用程序将只接受提供该 public 密钥的证书。这使得恶意行为者(没有窃取您的证书)更难进行中间人攻击。

TL;DR:只要您采取措施防止中间人攻击,并确保您的证书安全,使用自签名和自生成的证书来保护安全就没有错非面向用户的连接。