创建PowerShell脚本数字签名认证

对于使用PowerShell脚本的用户都知道,第一次在使用PowerShell的时候,我们通常都会去设置PowerShell的ExecutionPolicy。这是为什么呢?因为PowerShell提供了比较安全的脚本运行执行机制,默认情况下初于对脚本的安全执行,它并不像VBS脚本那样可以双击运行。这也就是为什么当你设置运行机制的时候,PowerShell提供了多种安全选项。

甚至你会看到有些脚本内部包含一些数字签名认证,今天我们就要谈下如何在Powershell脚本中设置数字签名认证。

这里我们要用到一个命令,它就是makecert.exe,它也属于Visual studio的一部分,你可以从其中得到这个工具。在我的环境中它位于:“C:\Program Files (x86)\Windows Kits\8.1\bin\x64\makecert.exe”路径下,在这里我们切换到对应的路径,然后运行这个工具来建立一个本地证书的授权,如下图所示我们需要运行如下命令:

创建PowerShell脚本数字签名认证_第1张图片

之后,它会跳出一个提示框,要求你建立私钥,如下:

创建PowerShell脚本数字签名认证_第2张图片

接着我们继续,创建我们的数字签名然后把它存储储存在我们的本地证书库里中。如下图所示,键入相关命令以及继续输入私钥:

创建PowerShell脚本数字签名认证_第3张图片

当数字签名证书创建完毕后,我们打开PowerShell,用CERT:适配器查看下我们创建的新证书,输入命令“dir Cert:\CurrentUser\My -CodeSigningCert” 输出如下,已经产生成功了:

创建PowerShell脚本数字签名认证_第4张图片

我们用如下命令筛选出我们所需要的证书,然后将它保存为变量$cert

创建PowerShell脚本数字签名认证_第5张图片

最后我们用Set-AuthenticodeSignature来给我们指定的PowerShell设置数字签名认证:

PS C:\Users\Administrator> Set-AuthenticodeSignature -PSPath "C:\GetProcess.ps1" -Certificate $cert


    Directory: C:\


SignerCertificate                         Status                                 Path
-----------------                         ------                                 ----
B88C3F608862012BB370E70D4426D0AEE9D342CD  Valid                                  GetProcess.ps1


好了,运行成功后,我们一起来看下,是否真正签名成功,我们用记事本打开我们指定的PowerShell脚本:

创建PowerShell脚本数字签名认证_第6张图片

好了,如上,签名已经成功附加在脚本文件内了。

你可能感兴趣的:(codesignature,PowerShell)