在 Windows Server 2008 R2 上通过 IIS 7.5 生成 CSR 是否总是创建新的私钥?

jzi*_*011 11 ssl iis-7.5 csr windows-server-2008-r2 private-key

为 Windows 2008 R2 服务器生成 CSR,需要确保用于 CSR 的私钥是新的。

我之前使用 OpenSSL 创建了我自己的自签名证书以进行测试,如果我没记错的话,我能够指定要使用的私钥。

在 IIS 服务器证书中,我从未被要求生成或选择私钥。

那么,在基于 Windows 的服务器上生成 CSR 是否总是为其创建一个新的私钥?如果没有,我如何确保制作/使用新的私钥?

Mat*_*sen 8

是的

“创建证书请求”向导会自动生成新的密钥对。

在 IIS 服务器证书中,我从未被要求生成或选择私钥。

这实际上不是真的 - 巫师对此并不十分明显。

当您输入身份信息(通用名称、地点、组织等)并点击“下一步”后,第二个屏幕会询问两件事:

  1. 加密服务提供商 (CSP)
  2. 位长

在此处输入图片说明

选择默认 CSP - Microsoft RSA SChannel CSP - 和 2048 的位长将相当于 Windows:

openssl req -new -newkey rsa:2048
Run Code Online (Sandbox Code Playgroud)

签名请求剖析

CSR 本身可以被认为有 3 个“部分”:

  1. 明文形式的身份信息(CN、Locality、Org. 等)
    • 这只是字符串,签名人(CA)可以随意更改
  2. 公钥
    • 您将需要服务器上的相应私钥
  3. 可选扩展字段
    • 仍然只是清除文本信息

发行人审查签署请求中的信息,可以更改(1)和(3)的内容。
发行者然后使用它的 CA私钥来加密请求者的公钥 (2)。

颁发最终证书时,它包含:

  1. 明文形式的身份信息(CN、Locality、Org. 等)
    • 现在添加了发行人信息
  2. 公钥
    • 还是和上面一样
  3. 可选扩展字段
    • 现在可能有发行人扩展字段
  4. 签名 blob
    • 这是用 CA 的私钥签名的公钥

现在,下次客户端获取您的证书时,它可以使用颁发者 CA 的公钥解密签名 blob (4) 并将其与证书中的公钥进行比较