如何启用 WinRM HTTPS 传输?

How to enable WinRM HTTPS transport?

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

以下是我运行命令winrm quickconfig -transport:https:

时发生的情况
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.

除非你想麻烦地设置一个完整的 single-tier or two-tier PKI infrastructure (which would be a topic for ServerFault rather than Whosebug) you could make do with 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 设置为另一台计算机的 name/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 isn't available as a separate download anymore, but you can get it from the Windows SDK(从子文件夹 \setup\WinSDKTools 下载 ISO 映像和 运行 SDK 工具安装程序)。

另请注意,强烈 不鼓励在任何类型的生产环境中使用这样的临时 CA。

我知道只分享一个 link 不好,但我在手机上,它总比没有好,并且使用 all/mostly PS 命令。

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