我知道服务器需要自签名 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或two-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 镜像并从子文件夹 \setup\WinSDKTools
运行 SDK 工具安装程序)。
另请注意,强烈不鼓励在任何类型的生产环境中使用这样的临时 CA。
关于ssl - 如何启用 WinRM HTTPS 传输?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35079889/