如何从C#代码或在运行IIS的服务器上使用Powershell生成IIS7 CSR(用于SSL)

如何从C#代码或在运行IIS的服务器上使用Powershell生成IIS7 CSR(用于SSL),c#,iis-7,csr,C#,Iis 7,Csr,如何从C#生成服务器SSL证书签名请求(CSR)?如果PowerShell是一个更好的选择,那么这也将是一个很好的解决方案。一些常规指针: 编辑-根据评论: MS提供的COM对象可以通过PowerShell访问…我知道三年后了,但Yahia解决方案中的链接声明它们将无法用于Server 2008。使用PowerShell,我能够使用Server 2008附带的Certreq.exe生成CSR。Certreq的文档是,以及INF文件的完整格式。当然,用您自己的值替换可分辨名称。字母对

如何从C#生成服务器SSL证书签名请求(CSR)?如果PowerShell是一个更好的选择,那么这也将是一个很好的解决方案。

一些常规指针:

编辑-根据评论:


MS提供的COM对象可以通过PowerShell访问…

我知道三年后了,但Yahia解决方案中的链接声明它们将无法用于Server 2008。使用PowerShell,我能够使用Server 2008附带的Certreq.exe生成CSR。Certreq的文档是,以及INF文件的完整格式。当然,用您自己的值替换可分辨名称。字母对应于以下字段:

  • CN:通用名称
  • O:组织
  • OU:组织单位
  • L:城市/地区
  • S:州/省
  • C:国家/地区
该脚本假定您有一个名为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”…更多信息。)

实际上,我的问题是准确地告诉我需要什么。我想为运行IIS服务器的同一系统上的软件自动创建CSR for SSL证书。URL:我想为运行IIS服务器的同一系统上运行的软件自动创建CSR for SSL证书。URL:最接近我需要的,但它使用COM对象。我希望能从命令行(appcmd…)中找到一些严格意义上的C#甚至是C#的东西,但不要使用COM objects.AFAIK。这目前只能通过COMI实现。我已经用Powershell选项更新了我的问题。也许这样做是可能的?Powershell可以访问COM对象。。。如果那是你想要的。