基于C#使用Kerberos/证书实现设备间远程PowerShell通信的配置及认证疑问
基于C#使用Kerberos/证书实现设备间远程PowerShell通信的配置及认证疑问
我现在的场景是这样的:有一台HostPC需要连接两台远程PC,通过PowerShell执行命令,打算用WSManConnectionInfo走HTTPS协议。但我现在在Kerberos和证书认证的概念上有点卡壳,还有证书配置的环节也有困惑,想请教几个问题:
关于WSMan默认认证方式的疑问
我从资料里了解到,WSManConnectionInfo默认会同时用Kerberos和Negotiate作为认证方式,来验证连接是在域内环境还是本地环境的,这个理解对吗?
证书认证的配置困惑
我用PowerShell的New-SelfSignedCertificate命令生成自签名证书,命令模板大概是这样的:
New-SelfSignedCertificate ` -DnsName <PCName> ` -CertStoreLocation <Path> ` -KeyLength 2048 ` -NotAfter (Get-Date).AddYears(xx) ` -TextExtension @("2.5.29.37={text}<OID Purpose>")
之后我参考了一个教程来配置WinRM over HTTPS,步骤是这样的:
- 在远程PC上用上面的命令生成证书,然后创建WinRM的HTTPS监听器,执行了这条命令:
winrm create winrm/config/Listener?Address=*+Transport=HTTPS '@{Hostname="<RemotePCName>";CertificateThumbprint="<RemotePC Certificate Thumbprint>"}'
- 然后在HostPC上,我用C#写了这段代码来创建连接:
var connectionInfo = new WSManConnectionInfo( new Uri($"https://{MachineName}:5986/wsman"), "http://schemas.microsoft.com/powershell/Microsoft.PowerShell", new PSCredential(<username>, <password>) );
测试下来连接完全没问题,但我总觉得哪里的步骤逻辑不对,是不是我的配置思路有疏漏?另外我对证书的创建、导入导出的正确流程也有点懵,能不能给我一些这方面的建议?
内容来源于stack exchange
相关产品推荐
相关产品推荐

