【问题标题】:How to enable WinRM HTTPS transport?如何启用 WinRM HTTPS 传输?
【发布时间】:2016-01-29 08:24:33
【问题描述】:

我知道服务器需要一个自签名 CA。但是我怎样才能生成一个 CA,我可以把它放在哪里使服务器的 PowerShell 2.0 工作?什么是CN匹配?

以下是我运行命令winrm quickconfig -transport:https时发生的情况:

WinRM 已设置为在此计算机上接收请求。
WSManFault
信息
    ProviderFault
        WSManFault
            信息

错误号:-2144108267 0x80338115
无法在 HTTPS 上创建 WinRM 侦听器,因为此计算机没有
有相应的证书。用于 SSL,证书
必须有一个与主机名匹配的 CN,适用于
服务器身份验证,并且不会过期、撤销或自签名。

【问题讨论】:

    标签: ssl powershell-2.0 powershell-remoting


    【解决方案1】:

    除非您想麻烦设置一个成熟的 single-tiertwo-tier PKI 基础设施(这将是 ServerFault 而不是 StackOverflow 的主题),您可以使用 makecert.exe创建一个自签名 CA 证书并使用它签名的主机证书。

    像这样创建 CA 证书:

    & makecert.exe -pe -r `
        -n "CN=TestCA" `
        -ss my `
        -sr LocalMachine `
        -a sha256 `
        -sky signature `
        "TestCA.cer"
    

    然后为主机创建证书:

    $cn = if ($env:USERDNSDOMAIN) {
            "$env:COMPUTERNAME.$env:USERDNSDOMAIN"
          } else {
            $env:COMPUTERNAME
          }
    
    & makecert.exe -pe `
        -n "CN=$cn" `
        -ss my `
        -sr LocalMachine `
        -a sha256 `
        -sky exchange `
        -eku 1.3.6.1.5.5.7.3.1 `
        -in "TestCA" `
        -is my `
        -ir LocalMachine `
        -sp "Microsoft RSA SChannel Cryptographic Provider" `
        -sy 12 `
        "$cn.cer"
    

    CN(通用名称)是您证书的主题,对于主机证书必须与计算机的 FQDN 匹配。

    如果您想为本地计算机以外的其他主机创建主机证书,您需要将$cn 设置为其他计算机的名称/FQDN。要从您的证书存储区获取目标计算机export 的证书和私钥(<serial> 是证书的序列号):

    & certutil.exe -exportPFX -f -privatekey -p "password" "<serial>" computer.pfx
    

    computer.pfx复制到您为其生成证书的计算机并按如下方式导入:

    & certutil.exe -importPFX -f -privatekey C:\path\to\computer.pfx
    

    导出证书时,系统会提示您输入您指定的密码。

    在应该使用由您的 TestCA 签名的证书的所有计算机上,您需要在 Trusted Root Certification Authorities 下为计算机帐户导入 TestCA.cer

    & certutil.exe -f -addstore ca C:\path\to\TestCA.cer
    

    请注意,makecert.exe 不再作为单独下载提供,但您可以从 Windows SDK 获取它(下载 ISO 映像并从子文件夹 \setup\WinSDKTools 运行 SDK Tools 安装程序)。

    另请注意,对于任何类型的生产环境,强烈不建议使用这样的临时 CA。

    【讨论】:

    • 谢谢你。我希望服务器可以从互联网的任何地方托管。所以我需要一个 CA,现在我制作了一个 CA。但是我可以把它放在哪里?命令如下:makecert -n "CN=PowerShell_test" -a sha1 -eku 1.3.6.1.5.5.7.3.3 -r -sv xxl.pvk xxl.cer -ss xxl -sr localMachine 并且我的文件夹中有一个 xxl.cer?我可以把它放在哪里使 https 工作?为什么我输入“Enter”但这个评论不是从下一行开始?谢谢你
    • 基本上,CA 只不过是一个自签名的 SSL 密钥和证书。密钥用于签署其他证书,证书用于验证使用密钥签署的证书。这就是为什么您需要将 CA 证书(在我的示例中为 TestCA.cer)部署到要使用由该 CA 签名的证书的每个主机。
    • WinRM 的基本用例真是一场噩梦。
    【解决方案2】:

    我知道只分享一个链接是不好的,但我在移动设备上,总比没有好,并且使用所有/大部分是 PS 命令。

    https://4sysops.com/archives/powershell-remoting-over-https-with-a-self-signed-ssl-certificate/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-16
      • 1970-01-01
      • 2015-07-09
      • 2018-02-09
      • 1970-01-01
      • 2020-11-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多