为 Windows 2008 R2 服务器生成 CSR,需要确保用于 CSR 的私钥是新的。
我之前曾使用 OpenSSL 创建自己的自签名证书进行测试,如果我没记错的话,我可以指定要使用的私钥。
在 IIS 服务器证书中,我从未被要求生成或选择私钥。
那么,在基于 Windows 的服务器上生成 CSR 是否总是会为其创建新的私钥?如果不是,我如何确保生成/使用新的私钥?
答案1
是的
“创建证书请求”向导会自动生成新的密钥对。
在 IIS 服务器证书中,我从未被要求生成或选择私钥。
事实上这不是真的——只是巫师对此不太明显。
当您输入身份信息(通用名称、地点、组织等)并点击“下一步”后,第二个屏幕会要求您输入两件事:
- 加密服务提供商 (CSP)
- 位长度
选择默认 CSP(Microsoft RSA SChannel CSP)和位长度 2048 将相当于 Windows 中的以下版本:
openssl req -new -newkey rsa:2048
签名请求的剖析
CSR 本身可以被认为包含 3 个“部分”:
- 明文形式的身份信息(CN、地点、组织等)
- 这只是字符串,签名者(CA)可以随意更改它们
- 公钥
- 你需要在服务器上有相应的私钥
- 可选扩展字段
- 仍然只是明文信息
发行人审查签名请求中的信息,并可能更改 (1) 和 (3) 的内容。
然后发行人使用其 CA私钥加密请求者的公钥(2)。
最终证书颁发时,其内容包括:
- 明文形式的身份信息(CN、地点、组织等)
- 现在已添加发行人信息
- 公钥
- 还是和上面一样
- 可选扩展字段
- 现在可能还有 Issuer 扩展字段
- 签名斑点
- 这是使用 CA 的私钥签名的公钥
现在,下次客户端获得您的证书时,它可以使用颁发者 CA 的公钥解密签名 blob(4)并将其与证书中的公钥进行比较