如何启用 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/
我知道服务器需要一个自签名 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/