security - Key Vault 中的证书身份验证

标签 security cryptography x509certificate azure-keyvault

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

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

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

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

最佳答案

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

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

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

关于security - Key Vault 中的证书身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37592220/

相关文章:

spring - 配置 Spring Boot 以防止 Logjam 攻击

Django:阻止外部查询字符串请求

Java SecureRandom 声明应该是特定于静态类的,也可以是特定于实例的

java - 如何在java中获取模数和pubExp?

java - 使用 Java 的 SHA256withDSA X509Certificate 中的错误验证签名算法

ios - 如何在 Swift 中获取 X509Certificate 字段

PHP 在 echo 中 echo-ing PHP 代码

ssl - rsa key 文件的解释

java - Java Keytool 是否允许 SAN 值具有通配符 DNS 名称

javascript - 安全 AJAX 连接/空字符 SSL 证书攻击?