![Microsoft CA 中的私钥是什么?在哪里?](https://linux22.com/image/739133/Microsoft%20CA%20%E4%B8%AD%E7%9A%84%E7%A7%81%E9%92%A5%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F%E5%9C%A8%E5%93%AA%E9%87%8C%EF%BC%9F.png)
我需要证书才能与某些服务提供商交换数据。此提供商建议使用OpenSSL其中,它们为创建证书的每个步骤提供了示例:
- 创建新的私钥。
- 根据步骤 1 中的私钥创建证书请求 (CSR)。
- 向他们发送 CSR,在收到新证书后,将其与步骤 1 中的密钥合并。
- 使用带有密钥的证书来签署数据。
我尝试使用微软认证:
- 在证书管理单元中,我创建了手动证书请求(*.req,我认为它与 *.csr 相同)。没有选项指示要使用哪个密钥
- 我向他们发送了请求并成功收到了没有密钥的证书
- 当将收到的证书导入到我的个人存储中时,会自动添加一个密钥(令我惊讶的是)但我不知道该密钥是什么。
- 现在我可以用密钥 (*.pfx) 导出此证书并能够对数据进行签名。但是,服务提供商报告错误(“由未知证书签名”)。
问题是:创建 CSR 的密钥是什么?合并的密钥是什么?我的步骤哪里出错了?
答案1
在 Windows 证书管理单元中,如果您可以导出私钥,则该密钥也位于您的证书存储中。这可能是因为您在同一台计算机上生成了请求并导入了公共证书。
大多数 TLS 用户代理都会验证证书是否链接到他们信任的根。要么向用户发送根 CA 的公共证书,让他们信任它,要么使用通常受信任的“公共”CA 之一签署您的证书。
答案2
创建 CSR 的密钥是什么?
客户端生成唯一的密钥对:公钥和关联的私钥。然后客户端使用公钥构建 CSR。私钥由客户端保存。
合并的密钥是什么?
当客户端收到证书时,它会将不变的公钥与已保存的私钥进行匹配并执行关联。
我的步骤哪里有错误?
最有可能的是服务提供商方面存在配置错误。Microsoft CA 颁发的证书与 OpenSSL 相同。
答案的凭证交给 Vadims Podāns,又名 PowerShell CryptoGuy