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

发布于 2024-12-07 09:05:02 字数 72 浏览 1 评论 0原文

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

How I can generate a server SSL Certificate Signing Request (CSR) from C#? If PowerShell is a better option, that would be a good solution as well.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

涫野音 2024-12-14 09:05:02

我知道已经是三年后的事了,但 Yahia 解决方案中的链接表明它们不适用于 Server 2008。通过使用 PowerShell,我能够使用 Server 2008 附带的 Certreq.exe 来生成 CSR。 Certreq 的文档位于此处,以及 INF 文件的完整格式。当然,用您自己的值替换专有名称。这些字母对应于以下字段:

  • CN:通用名称
  • O:组织
  • OU:组织单位
  • L:城市/ locality
  • 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”...更多信息此处。)

I know it's three years later, but the links in Yahia's solution state that they will not work for Server 2008. Using PowerShell, I was able to use Certreq.exe, which ships with Server 2008, to generate the CSR. The documentation for Certreq is here, along with the full format for the INF file. Of course, substitute your own values for the distinguished name. The letters correspond to these fields:

  • CN: Common Name
  • O: Organization
  • OU: Organizational Unit
  • L: City/locality
  • S: State/Province
  • C: Country/region

The script assumes you have an environment variable named TEMP that points to a directory for which you have write access:

$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

For those who are new to PowerShell, the @" and "@ delimiters must not be indented. (These define what is known as a "Here-String"... more information here.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文