生成数字签名证书并给powershell脚本认证

首次在计算机上启动 Windows PowerShell 时,现用执行策略很可能是 Restricted(默认设置)。

Restricted 策略不允许任何脚本运行。

若要了解计算机上的现用执行策略,请键入:

get-executionpolicy

若要在本地计算机上运行您编写的未签名脚本和来自其他用户的签名脚本,请使用以下命令将计算机上的 
执行策略更改为 RemoteSigned:

set-executionpolicy remotesigned

其他参数

  • Restricted—默认的设置, 不允许任何script运行;
  • AllSigned—只能运行经过数字证书签名的script;
  • RemoteSigned—运行本地的script不需要数字签名,但是运行从网络上下载的script就必须要有数字签名;
  • Unrestricted—允许所有的script运行。

创建自签名证书

创建一个自签名证书,需要用到microsoft的工具,makecert.exe 。这个工具不能单独下载,但是它包含在微软的.NET framework中,如果你的电脑上已经安装了Visual studio 那就方便多了。

开始->所有程序-Microsoft Visual Studio 2010->Visual Studio Tools->Visual Studio 命令提示(2010)

makecert.exe -pe -r -n "cn=PSCert" -eku 1.3.6.1.5.5.7.3.3 -ss "my"

这里要稍微注意 -eku 参数:1.3.6.1.5.5.7.3.3,不能是其它,否则证书的预期目的属性就不是代码签名了。
上面创建的证书会自动保存在CurrentUser\My 路径下面。可以在Powershell中查看(切换到证书所在路径):

PS E:> ls cert:CurrentUser\My | where {$_.subject -eq "CN=PSCert"}

  目录: Microsoft.PowerShell.SecurityCertificate::CurrentUser\My

Thumbprint                                            Subject
----------                                            -------
BA61AF0B8A856422AD9EF86104C8CEDB2583A21A             CN=PSCert

把前面的证书保存变量$cert

PS E:> $cert=ls cert:CurrentUser\My | where {$_.subject -eq "CN=PSCert"}

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

PS C:\Users\Administrator> Set-AuthenticodeSignature -PSPath "C:\Test.ps1" -Certificate $cert
    Directory: C:\
SignerCertificate                                                                              Status                                 Path
-----------------                                                                                       ------                                 ----
B88C3F608862012BB370E70D4426D0AEE9D342CD                    Valid                               Test.ps1

最后把生成的证书导出然后导入到需要运行的服务器

导出方式:

在控制台菜单,开始-》运行-》打开certmgr.msc证书控制台 

新生成的证书一般在个人下面。

最后把导出的证书导入到服务器的受信任的根证书颁发机构

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值