【发布时间】:2011-09-29 14:30:21
【问题描述】:
如何从 C# 生成服务器 SSL 证书签名请求 (CSR)?如果 PowerShell 是一个更好的选择,那也是一个很好的解决方案。
【问题讨论】:
如何从 C# 生成服务器 SSL 证书签名请求 (CSR)?如果 PowerShell 是一个更好的选择,那也是一个很好的解决方案。
【问题讨论】:
一些通用指针:
编辑 - 根据 cmets:
MS提供的COM对象CertEnroll可以通过PowerShell访问...
【讨论】:
我知道三年后,但 Yahia 解决方案中的链接表明它们不适用于 Server 2008。使用 PowerShell,我能够使用 Server 2008 附带的 Certreq.exe 来生成 CSR。 Certreq 的文档是 here,以及 INF 文件的完整格式。当然,用您自己的值替换可分辨名称。这些字母对应于这些字段:
该脚本假定您有一个名为 TEMP 的环境变量,它指向您具有写入权限的目录:
$reqFile = 'C:\ChangeMe\Request.req'
Push-Location $env:TEMP
@"
[NewRequest]
Subject = "CN=www.contoso.com, O=Contoso Inc, OU=Sales, L=Redmond, S=Washington, C=US"
ProviderName = "Microsoft RSA SChannel Cryptographic Provider"
KeyLength = 2048
MachineKeySet = true
FriendlyName = "www.contoso.com"
[RequestAttributes]
CertificateTemplate="WebServer"
"@ | Out-File .\request.inf -Encoding default -Force
certreq -f -new request.inf `"$reqFile`"
Pop-Location
对于不熟悉 PowerShell 的用户,@" 和 "@ 分隔符不得缩进。 (这些定义了所谓的“Here-String”...更多信息here。)
【讨论】: