当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何对 PowerShell 脚本进行数字签名

作者:精品下载站 日期:2024-12-14 07:21:52 浏览:15 分类:玩电脑

如何对 PowerShell 脚本进行数字签名


在本文中,创建数字签名证书以使用 Windows PowerShell 对文件进行数字签名。数字证书通常由证书颁发机构 (CA) 颁发。但在这篇文章中,我们将创建一个自签名证书。当然是使用 PowerShell。无需第三方工具。

介绍

文件是用证书签名的。密码学可用于验证真实性。这是使用密钥对私钥和公钥来完成的。该文件使用私钥进行数字签名,公钥用于验证其身份。公钥可以提供给任何人。私钥仅属于您。这意味着您的身份可以得到验证。

[玩转系统] 如何对 PowerShell 脚本进行数字签名

在本文中,创建了一个自签名证书,这意味着目前您和您的计算机是这个星球上唯一信任该证书的人。 ?

创建自签名证书

打开 Windows PowerShell 并运行以下 One-Liner 以创建签名证书。

New-SelfSignedCertificate -DnsName [email protected] -CertStoreLocation Cert:\CurrentUser\My\ -Type Codesigning

[玩转系统] 如何对 PowerShell 脚本进行数字签名

您可以在证书存储中找到您的证书。运行 certmgr.msc。

certmgr.msc

[玩转系统] 如何对 PowerShell 脚本进行数字签名

在受信任的根证书颁发机构和受信任的发布者中导入证书

现在必须导出证书,然后将其导入到受信任的根证书颁发机构和受信任的发布者中。

[玩转系统] 如何对 PowerShell 脚本进行数字签名

双击证书并选择“详细信息”和“复制到文件”...

[玩转系统] 如何对 PowerShell 脚本进行数字签名

不要导出私钥。不需要。

[玩转系统] 如何对 PowerShell 脚本进行数字签名

选择 CER 格式。

[玩转系统] 如何对 PowerShell 脚本进行数字签名

将文件保存到您想要的任何位置。

现在将证书导入到受信任的根颁发机构受信任的发布者。

[玩转系统] 如何对 PowerShell 脚本进行数字签名

签署文件

接下来,我们使用 Set-Authenticodesignature 来签署我们的文件。在这个例子中,它是一个。 ps1 文件,因此是一个 PowerShell 脚本。

Set-AuthenticodeSignature -FilePath C:\Temp\script1.ps1 -Certificate (Get-ChildItem -Path Cert:\CurrentUser\My\ -CodeSigningCert)

[玩转系统] 如何对 PowerShell 脚本进行数字签名

不用担心状态未知错误。下次你这样做的时候就会出现有效的结果。疯狂的事情。好吧,我们现在不关心这个。

[玩转系统] 如何对 PowerShell 脚本进行数字签名

好的。最后,看看发生了什么。打开 Windows 资源管理器,右键单击文件,选择属性,然后单击数字签名。

[玩转系统] 如何对 PowerShell 脚本进行数字签名

测试你的脚本

为了测试您的脚本,请确保执行策略允许运行 PS1 脚本。

Get-ExecutionPolicy

Remotesigned、AllSigned 和 Unrestricted 是您的朋友……如果策略设置为受限,则针对此测试环境将其设置为 AllSigned。

Set-ExecutionPolicy AllSigned

[玩转系统] 如何对 PowerShell 脚本进行数字签名

有关执行策略的更多信息请参见此处:

https://technet.microsoft.com/de-at/library/hh847748.aspx

然后运行你的脚本。

[玩转系统] 如何对 PowerShell 脚本进行数字签名

错误处理

第一期

如果您看到类似的内容,那么您可能忘记将证书导入到受信任的根证书颁发机构。

C:\temp\Script1.ps1 : 无法加载文件 C:\temp\Script1.ps1。 证书
链已处理,但终止于不受信任的根证书
信任提供者。

[玩转系统] 如何对 PowerShell 脚本进行数字签名

第2期

如果您必须确认脚本的执行,那么它看起来像这样:

您想运行来自这个不受信任的发布者的软件吗?
文件 C:\temp\Script1.ps1 是由 [email protected] 发布的,不是
受您的系统信任。仅运行来自受信任发布者的脚本。
[V] 从不运行 [D] 不运行 [R] 运行一次 [A] 始终运行 [?] 帮助
(默认为“D”):

为了避免这种情况,请将您的证书导入到受信任的发布者。

[玩转系统] 如何对 PowerShell 脚本进行数字签名

享受证书和数字签名的乐趣!

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯