[玩转系统] 利用 SSL 上的 WinRM 设置 PSRemoting [分步]
作者:精品下载站 日期:2024-12-14 13:05:58 浏览:14 分类:玩电脑
利用 SSL 上的 WinRM 设置 PSRemoting [分步]
如果您已经使用 PowerShell Remoting (PSRemoting) 运行远程命令,您就会知道该功能有多么方便。您可以连接到一台或多台远程计算机并像管理本地计算机一样管理它们。 PSRemoting 依赖于 Windows 远程管理 (WinRm) 来实现这一点,如果您不使用基于 SSL 的 WinRM,则可能会面临一些安全问题。
在本实践教程中,您将了解如何在客户端和服务器上设置 Windows 以使用 WinRM over HTTPS (SSL),以及如何在使用 WinRM over HTTPS 时使用证书进行身份验证。
先决条件
如果您想按照本教程演练进行操作,请确保您具备以下条件:
- Windows 7+ 或 Server 2008 R2 计算机用作客户端计算机。本教程将使用 Windows 10。
- Windows 7+ 或 Server 2008 R2+ 计算机用作服务器计算机。本教程将使用 Windows Server 2019。
- 访问本地管理帐户或在客户端和服务器计算机上具有本地管理权限的帐户。
- Active Directory 证书服务 (ADCS) 公钥基础设施 (PKI) 设置。如果您为生产实施实施 ADCS 将会有所帮助,但对于本教程和测试来说它是可选的。本教程将假设 PKI 设置为企业或独立 CA。
为什么使用基于 SSL 的 WinRM?
PSRemoting 开箱即用,使用 WinRM,允许您远程管理客户端计算机。一旦 PSRemoting 通过 WinRM 建立会话,它就会加密从客户端到服务器的所有通信。此外,在没有 HTTPS 的情况下实现 PSRemoting 的设置过程相当简单。
如果 PSRemoting 已经加密了会话通信,那么为什么要费尽心思去设置 ADCS 之类的东西并在已经加密的情况下管理证书呢?
因为在身份验证过程中,凭据可能会以不安全的格式发送,具体取决于所使用的身份验证类型。
使 PSRemoting 更安全的最简单方法之一是通过 HTTPS 而不是 HTTP 使用 WinRM。 HTTPS 封装了整个连接流,包括 WinRM 已使用的加密层内的身份验证。 HTTPS 还同时提供了一种方法来验证您正在连接的服务器是否是您认为的服务器。
使用自签名证书配置 WinRM
现在让我们开始演示。对于第一个技巧,您将学习如何通过自签名证书通过 SSL 设置与 WinRm 的加密 PSRemoting 通信。
使用自签名证书是设置测试环境的好方法,而无需担心 ADCS 等 PKI。当您使用自签名证书时,您会生成一个由服务器本身签名的证书,该证书基本上可以为其自身提供担保。
证书通常用于执行两项任务:验证连接并对其进行加密。使用自签名证书只能实现后者。要验证服务器的身份,您必须始终使用 PKI 提供的证书。 PKI 提供的证书提供单一信任源,而不必手动单独信任每个自签名证书。
使用自签名证书配置基于 SSL 的 WinRM 需要四个高级步骤:
- 在目标计算机上创建自签名证书。
- 配置服务器的 WinRM Web 服务器(侦听器)以使用自签名证书进行身份验证。
- 打开目标计算机的 Windows 防火墙上的适当端口。
- 使用 PowerShell cmdlet(例如
Enter-PSSession
)执行命令以在客户端上启动远程连接。
现在让我们详细介绍每个步骤。
创建自签名证书
第一步是在服务器上生成自签名证书。连接时,PSRemoting 将使用此证书来加密所有通信。
在 ServerB 上以管理员身份打开 Windows PowerShell 控制台时,运行 New-SelfSignedCertificate
cmdlet,如下所示。运行以下命令会在本地计算机的个人证书存储中生成 ServerB.domain.com 的证书。
New-SelfSignedCertificate -Subject 'CN=ServerB.domain.com' -TextExtension '2.5.29.37={text}1.3.6.1.5.5.7.3.1'
Subject
参数应该是服务器的完全限定域名。 WinRm 使用主题来验证服务器的身份。
即使服务器位于工作组中,也始终提供域名,例如domain.com或lab.local。连接到目标计算机时,您连接的 DNS 名称必须与此主题名称完全匹配,否则连接将失败。
TextExtension
允许您定义证书的密钥用法 (2.5.29.37
),它定义允许使用证书的用途。定义服务器身份验证的密钥用法 ({text}1.3.6.1.5.5.7.3.1
),以确保证书只能用于验证服务器的身份。
New-SelfSignedCertificates 运行后,它将返回其生成的证书的指纹。保存它,因为您将在下一个命令中需要它。
配置 WinRM 侦听器
在服务器上创建自签名证书后,请配置 WinRm 侦听器以开始使用该证书进行身份验证。为此,请使用 winrm create
命令,如下所示。
下面命令中的 Address=*
通知侦听器侦听服务器上配置的任何 IP 地址。如果服务器配置了多个IP地址,您可以在此处定义特定的IP地址。
请务必将 占位符替换为上一步中返回的指纹。
winrm create winrm/config/Listener?Address=*+Transport=HTTPS '@{Hostname="ServerB.domain.com"; CertificateThumbprint="<cert thumbprint here>"}'
打开 WinRM SSL 防火墙端口
接下来,如果您使用 Windows 防火墙,则必须允许 HTTPS 流量通过默认 HTTPS 端口 5986
进入服务器。
通过运行以下命令,使用 PowerShell 打开基于 HTTPS 的 WinRM 的防火墙端口。
$FirewallParam = @{
DisplayName = 'Windows Remote Management (HTTPS-In)'
Direction = 'Inbound'
LocalPort = 5986
Protocol = 'TCP'
Action = 'Allow'
Program = 'System'
}
New-NetFirewallRule @FirewallParam
通过 SSL 连接到服务器
现在,您已将远程 Windows Server 配置为接受通过 SSL 的 WinRM 连接。此时,返回客户端并启动您想要测试的任何 PSRemoting 命令。例如,您可以尝试 Enter-PSSession
或 Invoke-Command
cmdlet。只是现在,您的连接与默认的 HTTP 连接略有不同。
通过 HTTPS 连接通常需要一个参数 UseSSL
。此参数告诉命令按照默认情况查找 HTTPS WinRM 侦听器与 HTTP 侦听器。 UseSSL
参数可用于更多 PSRemoting 命令。
为了进行测试,请运行 Enter-PSSession
,提供由自签名证书主题定义的服务器 FQDN、用于定义用户名和密码的 PSCredential 对象,以及最后的 UseSSL
切换参数。
Enter-PSSession -ComputerName ServerB.domain.com -Credential (Get-Credential) -UseSSL
如果运行上述命令,您将收到一条错误消息,因为您已将服务器上的 WinRM 侦听器配置为使用自签名证书。每当 PSRemoting 客户端尝试向服务器进行身份验证时,它都会尝试验证证书,但无法验证。自签名证书没有命令可以遵循的信任链,因此会失败。
要使用自签名证书连接到服务器,您必须覆盖证书信任检查。您可以通过使用 New-PSSessionOption
cmdlet 创建名为 SkipCACheck
的 PSSessionOption 并将其传递给命令来实现此目的,如下所示。
$PSSessionOption = New-PSSessionOption -SkipCACheck
Enter-PSSession -ComputerName ServerB -Credential (Get-Credential) -SessionOption $PSSessionOption -UseSSL
您可以定义许多不同的 PSSessionOption 对象来为远程连接添加未直接包含在 Enter-PSSession
cmdlet 中的选项。
尝试再次连接,PowerShell 现在应该提示您输入凭据。一旦提供,您现在应该通过 SSL 使用 WinRM 连接到服务器!
使用 CA 签名证书配置 WinRM
如果您打算在生产中使用 WinRM 来使用 PSRemoting,并希望尽可能保持安全,则需要重点关注使用证书颁发机构 (CA) 签名证书的 WinRM over SSL。
CA 签名的证书维护信任链,并且比简单的自签名证书更安全,因为它们验证证书颁发者的身份。
如果您处于 Active Directory 环境中,设置 CA 的最常见方法之一是使用 ADCS。通过 ADCS,您可以将证书部署到设备并配置 WinRM 以使用这些证书。
本教程假设您已经设置了 ADCS 并在您的环境中工作。
要进行快速设置,您可以遵循 Microsoft 的文档,但对于生产部署,您应该深入研究配置,因为证书颁发机构是组织加密工作的中心。
创建证书请求
使用 CA 颁发的证书的第一步是创建证书。要创建证书,您必须首先使用证书签名请求 (CSR) 发出证书请求。生成后,可以将该 CSR 发送到 CA 以颁发证书。
本部分的步骤适用于企业 CA 或独立 CA 的 ADCS 部署。如果您使用的是 AD 集成的企业 CA,则可以使用证书自动注册或证书模板来加快注册证书的速度,而无需执行本节中的步骤。
在服务器上(本教程中的ServerB),创建 CSR:
- 运行 certlm.msc 打开 Windows 证书管理器。
2. 右键点击个人商店,然后选择所有任务 —> 高级操作 —> 创建自定义请求 。
3. 对于本教程,请将所有字段保留为默认值,直到到达下面所示的证书信息页面。当您到达此处时,单击详细信息下拉列表并选择属性。
4. 单击主题选项卡并将类型更改为通用名称。
5. 现在,如果服务器已加入域,则输入其完全限定域名;如果未加入域,则仅输入主机名,然后单击添加。
请注意,要与 WinRM SSL 侦听器一起使用,您必须使用公用名称。列表中的其他选项可以包括在内,但对于此部署来说不是必需的。
6. 单击扩展选项卡。
7. 如果您不使用基于证书的身份验证(稍后将介绍),请展开扩展密钥用法标头并添加服务器身份验证。此密钥使用类型告诉 Windows 该证书应用于对服务器进行身份验证。其他选项包括客户端身份验证、代码签名和文档加密。
8. 如果您想设置基于证书的身份验证,请确保选择客户端身份验证,如下所示。
9. 接下来,单击私钥选项卡并注意密钥选项。将默认密钥大小从 1024 更改为至少 2048,以增强密钥对的安全性。
Windows 中还提供了更强大的加密提供程序,但您可能会面临与旧软件的不兼容问题。
10. 关闭证书属性窗口,单击确定保存设置,然后单击下一步继续按照提示操作。
11. 现在提供一个输出证书请求的路径,您可以稍后在其中检索它,然后单击完成。
完成后,您应该拥有一个证书请求文件。
申请证书
创建请求后,您现在需要将该请求提交给 CA,CA 将生成证书。要做到这一点:
- 导航到您的 ADCS 服务器:http:///certsrv/certrqxt.asp。
2. 使用记事本打开之前创建的证书请求文件,并将证书请求文件中的文本复制到请求框中。此证书的附加属性不需要任何内容。
3. 单击提交。这会将您的请求提交给 CA。然后它应该向您显示请求 ID,稍后将需要该 ID。保存这个!您稍后会需要它。
4. 现在,使用本地计算机上的 Windows 证书管理器或通过运行 certsrv.msc 通过 RDP 连接到属于 ADCS 环境一部分的 CA 服务器。
5. 单击待处理请求。
6. 右键单击待处理的请求,单击所有任务,然后单击问题。这将根据之前步骤中的请求 ID 批准您刚刚提交的请求。
注册证书
现在您已在 CA 上颁发了证书,是时候在您要配置 WinRM 的服务器上注册该证书了。要做到这一点:
- 从您要通过 SSL 设置 WinRM 的服务器上,导航至http:///certckpn.asp。您应该看到一个待处理的证书请求。
如果需要,您可以从其他计算机检索公共证书,但从通过 HTTPS 为 WinRM 设置的服务器开始可以简化该过程。
2. 从列表中选择您提交的请求并下载证书链。如果您通过 HTTPS 配置 WinRM 的服务器确实将您的 CA 作为根服务器,则您应该下载整个证书链。
3. 打开证书链文件。您应该看到服务器的证书以及链中更高级别的任何证书颁发机构证书。下面的win2.lab.int是请求的证书,WIN2-CA是为win2.lab.int颁发证书的CA的证书嗯>。
4. 双击其中一个证书,然后在打开的框中单击安装证书按钮。由于此证书将由服务器而不是特定用户使用,因此将该选项更改为本地计算机。
5. 继续按照提示进行操作,将所有内容保留为默认值。默认情况下应将证书放置在受信任的根证书存储中。
6. 现在,对列表中的每个其他证书重复步骤 3-5。如果您有多个证书,请确保所有其他证书都放置在中间证书颁发机构存储中。
创建并设置 WinRM HTTPS 侦听器
现在所有证书都已安装,是时候在服务器上配置 WinRM 以将该证书用于侦听器了。
在 WinRm 服务器上打开 PowerShell:
- 运行以下命令自动设置 WinRm 侦听器。
winrm
命令通过在本地计算机证书存储中搜索与 WinRM 要求匹配的证书来实现此目的。
winrm quickconfig -transport:https
2. Windows 防火墙默认会阻止 WinRM HTTPS 端口 5986
。要确保防火墙允许入站端口 5986
,请运行以下 PowerShell 命令:
$FirewallParam = @{
DisplayName = 'Windows Remote Management (HTTPS-In)'
Direction = 'Inbound'
LocalPort = 5986
Protocol = 'TCP'
Action = 'Allow'
Program = 'System'
}
New-NetFirewallRule @FirewallParam
测试 WinRM SSL 连接
此时,您已准备好连接。使用您最喜欢的 PSRemoting cmdlet(例如 Invoke-Command
或 Enter-PSSession
)连接到服务器并使用 UseSSL
参数。
Enter-PSSession -ComputerName ServerB.domain.com -UseSSL -Credential (Get-Credential)
始终确保 ComputerName
参数的值与证书创建期间提供的公用名称完全匹配。如果您尝试连接到不同的主机名或主机的 IP 地址,您将收到证书不匹配错误,导致连接失败。
设置基于证书的身份验证
到目前为止,您应该已经设置了一个 WinRM 侦听器以使用 HTTPS。如果是这样,您还可以使用用户身份验证证书在远程服务器上以本地用户身份进行身份验证。使用用户证书是最安全的方法之一,但设置确实需要一段时间。您会发现这也是大量重复工作,因为每个证书对于各个客户端计算机都是唯一的。
基于证书的身份验证仅适用于本地用户帐户,不适用于域用户。
假设您请求了用于客户端身份验证的证书,如创建证书请求部分所述,请继续阅读:
启用证书身份验证并在服务器上映射用户
- 在服务器上,运行
Set-Item
命令以允许基于证书的身份验证。
Set-Item WSMan:\localhost\Service\Auth\Certificate -Value $true
2. 接下来,运行 Get-ChildItem
查看受信任的根证书颁发机构存储,以查找颁发客户端身份验证证书的 CA 指纹。为此,请按包含您的 CA 名称的主题过滤证书。
Get-ChildItem Cert:\LocalMachine\Root | Where-Object {$_.Subject -like 'CA-Name'}
3. 运行以下命令,其中 SubjectName
是您在创建证书时提供的用户证书的主题
CAThumbprint
是使用上一个命令收集的 CA 指纹,然后提示输入的凭据是将用于基于证书的身份验证的本地用户的用户名和密码。
New-Item WSMan:\localhost\ClientCertificate -Subject SubjectName -URI * -Issuer CAThumbprint -Credential (Get-Credential)
测试基于证书的身份验证
现在,证书到用户的映射已设置完毕,可以使用客户端计算机上的证书进行身份验证,而无需提供凭据。
在 PowerShell 中的客户端上,通过查看个人证书存储来获取客户端证书的指纹。
Get-ChildItem Cert:\CurrentUser\My
现在,在 PSRemoting 命令的 CertificateThumbprint
参数中指定指纹,如下所示。
Enter-PSSession -ComputerName ServerName -CertificateThumbprint <Thumbprint>
请注意,由于基于证书的身份验证只能与 HTTPS 侦听器一起使用,因此隐含了 -UseSSL
,这与您需要指定使用 SSL 的其他身份验证方法不同。
下一步
现在您已经了解了如何通过 SSL 设置 WinRM,请在我们的PowerShell Remoting:终极指南帖子中了解有关 PSRemoting 的更多信息!
想要了解有关 PowerShell 的更多信息,包括有关 PSRemoting 的更多信息?查看系统管理员的 PowerShell 这本书!
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag