我知道服务器需要一个自签名的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.
答案 0 :(得分:3)
除非你想设置一个成熟的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映像并从子文件夹{{运行SDK Tools安装程序} 1}})。
另请注意,对于任何类型的制作环境,使用类似的临时CA 强烈不鼓励。
答案 1 :(得分:0)
我知道仅仅分享一个链接是不好的,但是我在移动设备上并且它比什么都没有好,并且使用所有/大多数PS命令。
https://4sysops.com/archives/powershell-remoting-over-https-with-a-self-signed-ssl-certificate/