如何启用WinRM HTTPS传输?

时间:2016-01-29 08:24:33

标签: ssl powershell-v2.0 powershell-remoting

我知道服务器需要一个自签名的CA.但是我如何生成CA,我可以在哪里使服务器的PowerShell 2.0工作?什么是CN匹配?

以下是我运行命令Private Const BBB As String = "$A$1" Sub Test() Dim BB As Long: BB = Range(BBB).Value Debug.Print BBB End Sub 时会发生的事情:

WinRM already is set up to receive requests on this machine.
WSManFault
Message
    ProviderFault
        WSManFault
            Message

Error number:  -2144108267 0x80338115
Cannot create a WinRM listener on HTTPS because this machine does not 
have an appropriate certificate. To be used for SSL, a certificate 
must have a CN matching the hostname, be appropriate for 
Server Authentication, and not be expired, revoked, or self-signed.

2 个答案:

答案 0 :(得分:3)

除非你想设置一个成熟的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签名证书的计算机上,您需要在计算机帐户的受信任的根证书颁发机构下导入TestCA.cer

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

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

另请注意,对于任何类型的制作环境,使用类似的临时CA 强烈不鼓励。

答案 1 :(得分:0)

我知道仅仅分享一个链接是不好的,但是我在移动设备上并且它比什么都没有好,并且使用所有/大多数PS命令。

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