Powershell CREDSSP 和 TLS 1.2
Posted
技术标签:
【中文标题】Powershell CREDSSP 和 TLS 1.2【英文标题】:Powershell CREDSSP and TLS 1.2 【发布时间】:2018-05-24 15:25:36 【问题描述】:服务器 A 是 Server 2008 R2、Powershell V3 启用所有 SSL 和 TLS 以及所有密码。 服务器 B 是 Server 2016、Powershell V5 和仅 TlS 1.2 和特定的密码集。
我无法让 Credssp 身份验证从 A 工作到 B,即使我使用
Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
我知道这是每个会话的设置,因此我将其包含在脚本本身中。
如果我将服务器 B (Server 2016) 设置为开启所有 SSL 和 TLS 加密,那么 CREDSSP 工作没有问题。
是的,我需要使用 CREDSSP,因为服务器 B 上的脚本引用了服务器 A 上的文件共享。
这是我正在使用的脚本,同样,它在启用所有版本的 TLS 时有效。
$pass = ConvertTo-SecureString "password" -asplaintext -force
$mycred = new-object -typename System.Management.Automation.PSCredential -argumentlist "domain\user.service",$pass
#
#
# The Remote Execution Command. Fully Qualified Domain name is critical since we are using Credssp.
# Credssp is being used to resolve an issue with a double hop authentication issue.
Invoke-Command -ComputerName ServerB.domain.edu -command C:\HelloWorld.ps1 -Authentication Credssp -Credential $mycred
我还没有尝试过但我会尝试的一件事是将服务器 A 和 B 都放在 TLS 1.2 上,看看它是否可以这样工作。这不是一个长期的解决方案,因为此时服务器 A 不能设置为仅 TLS 1.2。
【问题讨论】:
是的,实际上我尝试将服务器 A 设置为仅支持 TLS 1.2,但我仍然被拒绝访问。只有当我在两台服务器上都启用了 TLS 1.0 时,我才能让它工作。 唯一启用的密码是 TLS_RSA_WITH_AES_* 尝试在 2008 服务器上设置这个值,看看它是否有效(默认情况下它应该可以工作,但有些事情很愚蠢。我遇到了这个问题)[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NetFramework\v4.0.30319] "SchUseStrongCrypto"=dword:00000001
跨度>
作为补充说明,请确保在 2008 服务器上应用补丁 KB3080079 以支持 RDP TLS1.2 和 KB3099845 以支持 .NET TLS1.2。
是的,我检查了这两个都应用了
【参考方案1】:
所以看起来问题与 Server 2008 有关,仅在 SCHANNEL Reg 设置上具有 TLS 的服务器子项的注册表项,而不是 TLS 的客户端子项。看图
一旦我添加了客户端子密钥并启用了 TLS 1.2 加密,它终于开始工作了。
【讨论】:
以上是关于Powershell CREDSSP 和 TLS 1.2的主要内容,如果未能解决你的问题,请参考以下文章
PowerShell Web 访问身份验证类型设置为 CredSSP 的问题