首页 > 解决方案 > Powershell CREDSSP 和 TLS 1.2

问题描述

服务器 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。

标签: powershellssltls1.2credssp

解决方案


因此,看起来问题与 Server 2008 有关,仅在 SCHANNEL Reg 设置上具有 TLS 的服务器子项的注册表项,而不是 TLS 的客户端子项。见图片

一旦我添加了客户端子密钥并启用了 TLS 1.2 加密,它终于开始工作了。

在此处输入图像描述


推荐阅读