[玩转系统] 关于签约
作者:精品下载站 日期:2024-12-14 02:18:25 浏览:15 分类:玩电脑
关于签约
简短描述
解释如何对脚本进行签名,以便它们符合 PowerShell 执行策略。
详细描述
此信息仅适用于在 Windows 上运行的 PowerShell。
受限执行策略不允许任何脚本运行。 AllSigned 和 RemoteSigned 执行策略可防止 PowerShell 运行没有数字签名的脚本。
本主题说明如何运行未签名的选定脚本(即使执行策略为远程签名),以及如何对脚本进行签名以供您自己使用。
有关 PowerShell 执行策略的更多信息,请参阅 about_Execution_Policies。
允许运行签名的脚本
当您第一次在计算机上启动 PowerShell 时,默认的受限执行策略可能会生效。
受限策略不允许任何脚本运行。
要查找计算机上的有效执行策略,请键入:
Get-ExecutionPolicy
要运行您在本地计算机上编写的未签名脚本和其他用户签名的脚本,请使用以管理员身份运行选项启动 PowerShell,然后使用以下命令将计算机上的执行策略更改为 >远程签名:
Set-ExecutionPolicy RemoteSigned
有关详细信息,请参阅 Set-ExecutionPolicy
cmdlet 的帮助主题。
使用 RemoteSigned 执行策略运行未签名的脚本
如果您的 PowerShell 执行策略是RemoteSigned,则 PowerShell 将不会运行从 Internet 下载的未签名脚本,包括您通过电子邮件和即时消息程序收到的未签名脚本。
如果您尝试运行下载的脚本,PowerShell 将显示以下错误消息:
The file <file-name> cannot be loaded. The file <file-name> is not
digitally signed. The script will not execute on the system. Please see
"Get-Help about_Signing" for more details.
在运行脚本之前,请检查代码以确保您信任它。脚本与任何可执行程序具有相同的效果。
要运行未签名的脚本,请使用 Unblock-File
cmdlet 或使用以下过程。
- 将脚本文件保存在您的计算机上。
- 单击开始,单击我的电脑,然后找到保存的脚本文件。
- 右键单击脚本文件,然后单击属性。
- 点击取消阻止。
如果从 Internet 下载的脚本经过数字签名,但您尚未选择信任其发布者,PowerShell 将显示以下消息:
Do you want to run software from this untrusted publisher?
The file <file-name> is published by CN=<publisher-name>. This
publisher is not trusted on your system. Only run scripts
from trusted publishers.
[V] Never run [D] Do not run [R] Run once [A] Always run
[?] Help (default is "D"):
如果您信任发布者,请选择运行一次或始终运行。如果您不信任发布商,请选择从不运行或不运行。如果您选择从不运行或始终运行,PowerShell 将不会再次提示您选择此发布者。
签署脚本的方法
您可以对您编写的脚本以及从其他来源获取的脚本进行签名。在签署任何脚本之前,请检查每个命令以验证其运行是否安全。
有关代码签名的最佳实践,请参阅代码签名最佳实践。
有关如何对脚本文件进行签名的详细信息,请参阅Set-AuthenticodeSignature。
PowerShell 3.0 的 PKI 模块中引入的 New-SelfSignedCertificate
cmdlet 可创建适合测试的自签名证书。有关详细信息,请参阅 New-SelfSignedCertificate
cmdlet 的帮助主题。
要向脚本添加数字签名,您必须使用代码签名证书对其进行签名。有两种类型的证书适合签署脚本文件:
由证书颁发机构创建的证书:公共证书颁发机构会付费验证您的身份并为您提供代码签名证书。当您从信誉良好的证书颁发机构购买证书时,您可以与运行 Windows 的其他计算机上的用户共享您的脚本,因为这些其他计算机信任该证书颁发机构。
您创建的证书:您可以创建自签名证书,您的计算机是创建该证书的颁发机构。该证书是免费的,使您能够在计算机上编写、签名和运行脚本。但是,由自签名证书签名的脚本将无法在其他计算机上运行。
通常,您只会使用自签名证书来签署您为自己使用而编写的脚本,以及签署您从已验证安全的其他来源获得的脚本。它不适合共享脚本,即使在企业内部也是如此。
如果您创建自签名证书,请务必在您的证书上启用强大的私钥保护。这可以防止恶意程序代表您签署脚本。这些说明包含在本主题的末尾。
创建自签名证书
要创建自签名证书,请使用 PKI 模块中的 New-SelfSignedCertificate cmdlet。该模块是在 PowerShell 3.0 中引入的。有关详细信息,请参阅 New-SelfSignedCertificate
cmdlet 的帮助主题。
$params = @{
Subject = 'CN=PowerShell Code Signing Cert'
Type = 'CodeSigning'
CertStoreLocation = 'Cert:\CurrentUser\My'
HashAlgorithm = 'sha256'
}
$cert = New-SelfSignedCertificate @params
使用 Makecert.exe
要在早期版本的 Windows 中创建自签名证书,请使用证书创建工具 MakeCert.exe
。该工具包含在 Microsoft .NET SDK(版本 1.1 及更高版本)和 Microsoft Windows SDK 中。
有关 MakeCert.exe
工具的语法和参数说明的详细信息,请参阅证书创建工具 (MakeCert.exe)。
要使用 MakeCert.exe
工具创建证书,请在 SDK 命令提示符窗口中运行以下命令。
笔记
第一个命令为您的计算机创建本地证书颁发机构。第二条命令从证书颁发机构生成个人证书。您可以完全按照命令的显示方式复制或键入命令。尽管您可以更改证书名称,但无需替换。
makecert -n "CN=PowerShell Local Certificate Root" -a sha256 `
-eku 1.3.6.1.5.5.7.3.3 -r -sv root.pvk root.cer `
-ss Root -sr localMachine
makecert -pe -n "CN=PowerShell User" -ss MY -a sha256 `
-eku 1.3.6.1.5.5.7.3.3 -iv root.pvk -ic root.cer
MakeCert.exe
工具会提示您输入私钥密码。该密码可确保未经您的同意任何人都无法使用或访问该证书。创建并输入您可以记住的密码。稍后您将使用此密码来检索证书。
要验证证书是否正确生成,请使用以下命令获取计算机上证书存储中的证书。您不会在文件系统目录中找到证书文件。
在 PowerShell 提示符下,键入:
Get-ChildItem cert:\CurrentUser\my -codesigning
此命令使用 PowerShell 证书提供程序来查看有关证书的信息。
如果已创建证书,则输出会在类似于以下内容的显示中显示标识证书的指纹:
Directory: Microsoft.PowerShell.Security\Certificate::CurrentUser\My
Thumbprint Subject
---------- -------
4D4917CB140714BA5B81B96E0B18AAF2C4564FDF CN=PowerShell User ]
签署脚本
创建自签名证书后,您可以签署脚本。如果您使用AllSigned执行策略,签署脚本允许您在计算机上运行该脚本。
以下示例脚本 Add-Signature.ps1
对脚本进行签名。但是,如果您使用 AllSigned 执行策略,则必须在运行 Add-Signature.ps1
脚本之前对其进行签名。
这很重要
在 PowerShell 7.2 之前,必须使用 ASCII 或 UTF8NoBOM 编码保存脚本。 PowerShell 7.2 及更高版本支持任何编码格式的签名脚本。
要使用此脚本,请将以下文本复制到文本文件中,并将其命名为 Add-Signature.ps1
。
## Signs a file
[cmdletbinding()]
param(
[Parameter(Mandatory=$true)]
[string] $File
)
$cert = Get-ChildItem Cert:\CurrentUser\My -CodeSigningCert |
Select-Object -First 1
Set-AuthenticodeSignature -FilePath $File -Certificate $cert
要签署 Add-Signature.ps1
脚本文件,请在 PowerShell 命令提示符下键入以下命令:
$cert = Get-ChildItem Cert:\CurrentUser\My -CodeSigningCert |
Select-Object -First 1
Set-AuthenticodeSignature add-signature.ps1 $cert
签署脚本后,您可以在本地计算机上运行它。但是,该脚本不会在 PowerShell 执行策略需要来自受信任机构的数字签名的计算机上运行。如果您尝试,PowerShell 将显示以下错误消息:
The file C:\remote_file.ps1 cannot be loaded. The signature of the
certificate cannot be verified.
At line:1 char:15
+ .\ remote_file.ps1 <<<<
如果 PowerShell 在运行不是您编写的脚本时显示此消息,请像对待任何未签名的脚本一样对待该文件。查看代码以确定您是否可以信任该脚本。
为您的私钥提供强有力的保护
如果您的计算机上有私钥和证书,恶意程序可能能够代表您签署脚本,从而授权 PowerShell 运行它们。
要防止代表您自动签名,请使用证书管理器 Certmgr.exe
将签名密钥和证书导出到 .pfx
文件。证书管理器包含在 Microsoft .NET SDK、Microsoft Windows SDK 和 Internet Explorer 中。
导出证书:
- 启动证书管理器。
- 选择 PowerShell 本地证书根颁发的证书。
- 单击导出启动证书导出向导。
- 选择是,导出私钥,然后单击下一步。
- 选择启用强保护。
- 输入密码,然后再次输入以确认。
- 键入具有
.pfx
文件扩展名的文件名。 - 单击完成。
重新导入证书:
- 启动证书管理器。
- 单击导入启动证书导入向导。
- 打开您在导出过程中创建的
.pfx
文件的位置。 - 在“密码”页面上,选择启用强私钥保护,然后输入您在导出过程中分配的密码。
- 选择个人证书存储。
- 单击完成。
防止签名过期
脚本中的数字签名在签名证书过期之前一直有效,或者只要时间戳服务器可以在签名证书有效时验证脚本是否已签名。
由于大多数签名证书的有效期仅为一年,因此使用时间戳服务器可确保用户可以在未来多年内使用您的脚本。
参见
- about_Execution_Policies
- about_个人资料
- Set-AuthenticodeSignature
- Get-ExecutionPolicy
- Set-ExecutionPolicy
- 代码签名简介
- 上一篇:[玩转系统] 关于简化语法
- 下一篇:[精彩网文] 收入和净资产成为美国中产阶级
猜你还喜欢
- 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