【发布时间】: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。
-
是的,我检查了这两个都应用了
标签: powershell ssl tls1.2 credssp