如何使用PowerShell脚本进行数字签名?

news2024/10/6 16:22:24

如何对PowerShell脚本进行数字签名以进行身份验证和保护的快速指南。

您是否希望确保您的脚本可以安全使用并且没有被篡改,从而伤害用户?如果是这种情况,那么您将需要使用由已知证书颁发机构(如Sectigo、DigiCert)提供的代码签名证书对PowerShell脚本进行数字签名。

一旦您对PowerShell脚本进行了数字签名,它就会通过嵌入您的独特数字签名来显示您的身份,该数字签名会向用户传达一条消息,即真正的软件开发公司已经开发了它并且对用户来说是安全的。

在本快速指南中,我们将引导您完成详细步骤,展示如何对PowerShell脚本进行数字签名,使其显示为可在计算机环境中顺利运行的受信任脚本,同时防止出现安全问题和警告。

但在我们开始之前,让我们看看您应该注意哪些先决条件。

对PowerShell脚本进行数字签名之前应了解的先决条件

一旦使用精心编写的Shell脚本将补丁管理任务置于自动驾驶仪上,您现在应该专注于保持这些脚本的安全并防止任何将恶意恶意软件加载到用户设备上的篡改。为此,您需要对PowerShell脚本进行数字签名。同样,为此您需要确保:

运行Windows操作系统8.1及更高版本的设备;

WindowsPowerShell脚本版本5.1及更高版本;

PowerShell脚本保存在您创建的任何文件夹中;

使用PowerShell数字签名编写脚本的步骤

1.从受信任的证书颁发机构购买代码签名证书

首先,您需要从DigiCert或Sectigo等全球受信任的证书颁发机构购买负担得起的代码签名证书。它使您能够保护您的软件、脚本和其他可执行文件免受未经授权的访问和第三方修改。它降低了篡改的风险,并向您的用户和系统管理员保证脚本是安全的并且来自您。

如果您已经购买了标准或EV(扩展验证)代码签名证书,则可以跳过此步骤。但是,如果您还没有,请先确保根据您的要求购买软件签名证书,然后再继续。

此外,请确保避免使用自签名代码签名证书,因为系统不信任它。自签名代码签名证书会产生警告,并且很有可能被篡改。换句话说,自签名的Shell脚本将被视为未签名的Shell脚本,没有人会信任它们。

购买并颁发代码签名证书后,您可以继续下一步。

2.以管理员身份打开Windows PowerShell

您需要以管理员权限运行PowerShell才能对PowerShell脚本进行数字签名。而且打开它:

 

窗口电源外壳

点击开始按钮

在搜索框中,键入PowerShell

选择应用程序PowerShell

右键单击PowerShell并选择选项以管理员身份运行

3.查看并选择您的代码签名证书

如果您有多个代码签名证书,请确保您从列表中选择了正确的代码签名证书。为此,您需要遵循以下命令:

Get-ChildItemCert:\ExampleUser\MyFolder-CodeSigningCert

 

但是,如果您想安全起见并想查看所有可用的代码签名证书,则可以使用以下两种方法:

目录更改方法

输入命令并转到存储代码签名证书的文件夹:

cd Cert\ExampleUser\MyFolder TypelsandpressEnter

 

命令方法

输入这个提到的命令:

Get-ChildItemCert:\ExampleUser\MyFolder Hitenter

 

笔记:

如果您的代码签名证书保存在另一个文件夹中,请确保在文件路径Cert:\ExampleUser\MyFolder中将其替换为实际正确的证书。这是一个相同的例子:

Cert:\ExampleUser\MyFolder-CodeSigningCert[0]orCert:\LocalMachine\MyFolder-CodeSigningCert[2]

点击Enter按钮后,您的代码签名证书将出现在PowerShell的Windows上。这是一个相同的示例,显示了系统中的所有代码签名证书:

获得代码签名证书列表后,您可以选择所需的证书并进一步对PowerShell脚本进行数字签名。然后您需要将代码签名证书设置为$cert等变量。接下来,您需要遵循从列表中选择特定软件签名证书的特定命令。下面是一个选择您想要的代码签名证书的命令,这是命令:

$cert=(Get-ChildItem–PathCert:\LocalMachine\MyFolder-CodeSigningCert)[4]

4.数字签名PowerShell脚本

选择代码签名证书后,您可以将其保存到$cert变量并开始签名。要对PowerShell脚本进行数字签名,可以使用Set-AuthenticodeSignature命令,例如:

Set-AuthenticodeSignature-FilePathSCRIPT_PATH-Certificate$cert

 

笔记:

通过替换SCRIPT_PATH使用实际路径

例如,对PowerShell脚本进行数字签名的命令如下所示:

Set-AuthenticodeSignature-FilePathC:\MyCodeSigningCert\eg_powershell_script.ps1-Certificate$cert

同样,建议您为PowerShell签名脚本添加时间戳,这样一旦您的代码签名证书过期并且您的数字签名永远有效,您的用户就不会面临任何警告。并且,要为您的数字签名PowerShell脚本添加时间戳,您可以使用以下命令:

Set-AuthenticodeSignature-FilePathC:\EgCodeSigningCert\eg_powershell_script.ps1-Certificate$cert-TimeStampServerhttp://timestamp.<certificate-authority-name>.com

笔记:

在命令中,将<certificate-authority-name>更改为您购买代码签名证书的证书颁发机构的名称。例如,Sectigo或Digicert。

5.对PowerShell脚本进行数字签名后进行验证

对PowerShell脚本进行代码签名后,建议您验证其签名是否正确。为了验证它,下面是一些方法:

通过打开已签名的PowerShell脚本

使用记事本等文本编辑器,打开已签名的PowerShell脚本

在脚本的底部,查找签名块。如果签名正确,它将以#SIG#开头和结尾

通过属性检查数字签名

如果您想直观地验证签名,您可以这样做。

打开WindowsExplorer并转到保存已签名PowerShell脚本的文件夹。

右键单击文件夹

从菜单中,选择选项属性

单击名为“数字签名”的选项卡

使用PowerShell命令进行验证

另一种方法是使用PowerShell命令验证您的签名。同样,您只需输入命令,您将获得它的输出,该输出将显示它是否已签名。

转到PowerShell窗口

键入以下提到的命令:

Get-AuthenticodeSignature-FilePathPATH_OF_PowerShell_SCRIPT|Select-Object-Property*

 

笔记:

将PATH_OF_PowerShell_SCRIPT更改为您保存它的实际路径。

结束语

通过使用代码签名证书对PowerShell脚本进行签名,您可以向用户保证,您在其中所做的任何更改都会得到您的批准和审查。同样,它还确保PowerShell脚本没有被篡改并且可以安全使用。在这里,我们给出了以数字方式签署PowerShell脚本的详细步骤。我们希望它能让您更好地了解如何做到这一点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/66481.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

简谈Spring Boot3.0升级后的踩坑之旅,另附解决方案!

注&#xff1a;本文基于 newbeemall 项目升级Spring Boot3.0踩坑总结而来。 一. 编译报错&#xff0c;import javax.servlet.*; 不存在 这个报错主要是Spring Boot3.0已经为所有依赖项从 Java EE 迁移到 Jakarta EE API&#xff0c;导致 servlet 包名的修改&#xff0c;Sprin…

写了30000字 用 shell 脚本做自动化测试实战项目(全面、完整)

前言 项目中有一个功能&#xff0c;需要监控本地文件系统的变更&#xff0c;例如文件的增、删、改名、文件数据变动等等。之前只在 windows 上有实现&#xff0c;采用的是 iocp ReadDirectoryChanges 方案&#xff0c;现在随着整个应用移植到 mac 上&#xff0c;需要对这一部…

大数据智能交通未来会是怎样的交通状况?

大数据智能交通未来会是怎样的交通状况&#xff1f;智能交通也是智慧城市的一个重要组成部分将会改变我们的交通&#xff0c;交通少不了大数据的处理&#xff0c;人工智能自动驾驶离不开大数据的支撑。 实现智能交通需要高效地从海量数据中分析、挖掘所需的信息和规律&#xf…

缺少微信小程序测试经验?这篇文章带你从0开始

微信小程序已经越来越普遍&#xff0c;但目前接触小程序的项目相对较少&#xff0c;对小程序的特性也不了解&#xff0c;缺少小程序测试实战经验。 本文主要通过对微信小程序特性和测试点进行总结&#xff0c;储备测试知识&#xff0c;提高测试效率。 小程序发布审核 发布前…

Linux jprobe的使用和原理

文章目录前言一、demo1.1 demo演示1.2 struct jprobe二、jprobe 原理2.1 原理简介1.2 原理详解三、源码解析3.1 struct jprobe3.2 register_jprobe3.3 setjmp_pre_handler3.4 jprobe_return3.5 longjmp_break_handler四、Deprecated Features五、使用 perf-probe 获取函数参数总…

CentOS7一键安装OpenStack

环境 CentOS 7 CPU核心数&#xff1a;2x2 RAM&#xff1a;8G DISK&#xff1a;60G 问题说明 在安装openstack过程中&#xff0c;一直卡在下面过程&#xff1a; Testing if puppet apply is finished: 192.168.100.132_controller.pp [ | ]等待一会儿之后会报各种不同的错误…

crontab 实现秒级定时任务的执行(学习笔记)

crontab 实现秒级定时任务的执行 传统暴力法 crontab -e ***** /usr/bin/curl 地址 ***** sleep 10; /usr/bin/curl 地址 ***** sleep 20; /usr/bin/curl 地址地址 ***** sleep 30; /usr/bin/curl 地址 ***** sleep 40; /usr/bin/curl 地址 ***** sleep 50; /usr/bin/cu…

进程和计划任务管理

查看进程信息 ps ps命令 查看静态的进程统计信息 ps -elf 查看进程信息 top top命令 查看动态的进程排名信息 top 查看进程信息 pgrep pgrep命令 根据特定条件查询进程 PID 信息 pgrep -l “log” pgrep -l -U teacher -t tty1 查看进程信息 pstree pstree命令 以树…

面试害怕考到JVM? 看这一篇就够了~

目录 前言 一、JVM内存划分 二、类加载 2.1、类加载是在干什么&#xff1f; 2.2、类加载的过程 2.3、何时触发类加载&#xff1f; 2.4、双亲委派模型&#xff08;重点考察&#xff09; 2.4.1、什么是双亲委派模型&#xff1f; 2.4.2、涉及到的类加载器 2.4.3、详细过…

【树莓派】raspberry pi控制超声波测距

目录一、超声波1、模块介绍2、工作原理二、gettimeofday函数三、树莓派控制超声波测距一、超声波 1、模块介绍 简介&#xff1a;   超声波传感器模块上面通常有两个超声波元器件&#xff0c;一个用于发射&#xff0c;一个用于接收。 硬件: 电路板上有4个引脚&#xff1a; …

测试面试被问“期望薪资多少”,不要傻傻直接报价,高情商都这样说

对于软件测试从业者而言&#xff0c;面试很重要&#xff0c;因为那是拿到薪资报酬丰厚程度的关键&#xff0c;你的理论及实操经验确实都很棒&#xff0c;那就尽量别让自己的面试表现拖自己的后腿&#xff0c;否则大概率会让你的薪水大打折扣。 你在面试中是否也遇到很多次以下…

38寻找二叉树的最近公共祖先39序列化和反序列化

38.寻找二叉树的最近公共祖先 这题和上一题的区别在于这不是二叉搜索树&#xff0c;无法根据值的大小来判断节点的位置&#xff0c;于是需要遍历 法1 递归写法 递归在左右子树寻找o1和o2 import java.util.*;/** public class TreeNode {* int val 0;* TreeNode left …

12月编程语言排行榜公布啦~

2022年迎来了最后一个月&#xff0c;我们可以看到&#xff0c;在这一年中编程语言起起伏伏&#xff0c;有的语言始终炙手可热&#xff0c;而有的语言却逐渐“没落”...... 日前&#xff0c;全球知名TIOBE编程语言社区发布了12月编程语言排行榜&#xff0c;有哪些新变化&#x…

Test Squence测试过程中如何按照特定条件暂停或者停止仿真

在Simulink模型做Test Squence测试时&#xff0c;工程师有时候希望测试用例能按照自己期望的条件来停止或暂停仿真&#xff0c;这个期望的特定条件&#xff0c;可以是时间达到&#xff0c;也可以是任何能达到的特定状态。 具体实现方法如下&#xff1a; 1、在Test Harness测试…

公司 CTO:高性能开发,你不会 Netty,怎么好意思拿 20K?

主管&#xff1a;这个版块用 Netty 框架就可以了呀&#xff0c;不会吗&#xff1f; &#xff08;此时&#xff0c;公司 CTO 路过&#xff09; 某程序员&#xff1a;这个我真不会... 主管&#xff1a;好了好了&#xff0c;那这一块我交给别人去做&#xff0c;这个也不难啊&am…

代码随想录刷题记录day36 整数拆分+不同的二叉搜索树

代码随想录刷题记录day36 整数拆分不同的二叉搜索树 参考&#xff1a;代码随想录 343. 整数拆分 思想 一个数可以被拆分成2个数或者3个及以上的数。 dp[i]表示拆分i以后&#xff0c;得到的最大的乘积 拆分成两个数 j和i-j,拆分成三个数及以上 j 和dp[i-j]&#xff0c;dp[i…

面试10分钟就完事了,问的实在是太...

干了两年外包&#xff0c;本来想出来正儿八经找个互联网公司上班&#xff0c;没想到算法死在另一家厂子。 自从加入这家外包公司&#xff0c;每天都在加班&#xff0c;钱倒是给的不少&#xff0c;所以也就忍了。没想到11月一纸通知&#xff0c;所有人不许加班&#xff0c;薪资…

【矩阵乘法】C++实现外部矩阵乘法

问题描述 ​ 使用文件和内存模拟系统缓存&#xff0c;并利用矩阵乘法验证实际和理论情况。 算法思想 设计一个Matrix类&#xff0c;其中Matrix是存在磁盘中的一个二进制文件&#xff0c;类通过保存的矩阵属性来读取磁盘。前八个字节为两个int32&#xff0c;保存矩阵的行列数…

Linux||报错:vboxuser is not in the sudoers file. This incident will be reported.

一、问题描述 打算在Ubuntu虚拟机上部署SonarQube时&#xff0c;为避免各种不必要的奇怪问题&#xff0c;预先使用sudo命令修改系统参数。 命令如下&#xff1a;sudo sysctl -w vm.max_map_count262144 报错如下&#xff1a;vboxuser is not in the sudoers file. This inciden…

制造业企业库存管理的现状与解决措施

在竞争激烈的现代经济时代&#xff0c;制造行业面临着巨大的挑战和压力&#xff0c;必须与时俱进&#xff0c;适应市场的各种变化才能生存并保持活力。随着经营模式的变化与产品数量的增加&#xff0c;对产品库存管理也提出更大的挑战。库存管理是指与库存相关的计划和控制活动…