【问题标题】:How to generate IIS7 CSR (for SSL) from C# code or using Powershell on server which IIS is running如何从 C# 代码或在运行 IIS 的服务器上使用 Powershell 生成 IIS7 CSR(用于 SSL)
【发布时间】:2011-09-29 14:30:21
【问题描述】:

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

【问题讨论】:

    标签: c# iis-7 csr


    【解决方案1】:

    【讨论】:

    • 其实我的问题是准确地告诉我需要什么。我想自动化为在运行 IIS 服务器的同一系统上运行的软件创建 SSL 证书的 CSR 的过程。网址:
    • 我想自动化为在运行 IIS 服务器的同一系统上运行的软件创建 CSR 的过程。 URL:blogs.msdn.com/b/alejacma/archive/2008/09/05/… 最接近我的需要,但它使用 COM 对象。我希望找到严格的 C# 甚至是命令行(appcmd ...)的东西,但不要使用 COM 对象。
    • AFAIK 目前只能通过 COM 实现
    • 我已经用 Powershell 选项更新了我的问题。或许这样有可能?
    • Powershell 可以访问 COM 对象...如果这就是您所追求的。
    【解决方案2】:

    我知道三年后,但 Yahia 解决方案中的链接表明它们不适用于 Server 2008。使用 PowerShell,我能够使用 Server 2008 附带的 Certreq.exe 来生成 CSR。 Certreq 的文档是 here,以及 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”...更多信息here。)

    【讨论】:

      猜你喜欢
      • 2020-11-01
      • 1970-01-01
      • 2012-10-24
      • 2020-10-05
      • 1970-01-01
      • 2015-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多