自建CA实战之 《0x03 代码签名》

自建CA实战之 《0x03 代码签名》

本文针对Windows平台,介绍如何使用自建CA来签发代码签名证书。

之前的文章中,我们介绍了如何自建CA,以及如何使用自建CA来签发Web服务器证书、客户端证书。

本文将介绍如何使用自建CA来签发代码签名证书。用于给程序签名。

代码签名的好处是:

  • 证明程序的作者是谁。
  • 证明程序没有被篡改过,没有被木马病毒感染过,凡是修改过一个字节,都会导致签名验证失败。

创建支持代码签名的证书

来源 选项卡中选择我们创建的CA。

在这里插入图片描述

主体选项卡中按需填写,就不再细说了。

在这里插入图片描述

扩展选项卡中,选择代码签名(Code Signing),下图中多选了Microsoft Individual Code SigningMicrosoft Commercial Code Signing,这两个选项是为了兼容性考虑,如果只是给自己的程序签名,可以只选Code Signing即可。

文末对这三个选项有比较详细的说明。

在这里插入图片描述

与上一章节导出客户端证书一样,这里我们导出格式选择pfx,然后设置密码。

在这里插入图片描述

使用代码签名证书签名程序

Windows代码签名工具下载

https://raw.githubusercontent.com/taills/tools/master/SignTool.zip

无法直接点击下载的,可以到仓库中下载。

https://github.com/taills/tools

我们把导出的证书文件拷贝到桌面,以及把我们要签名的程序拷贝到桌面。

注意:这里证书**不用双击打开导入!**因为我们要使用命令行工具来签名程序。

我们这里使用的是记事本(notepad.exe)程序,当然你也可以使用其他程序。

cd C:\Users\Administrator\Desktop
xcopy C:\Windows\System32\notepad.exe .

我们查看记事本程序的属性,发现它并没有签名。
在这里插入图片描述

我们使用signtool工具来给记事本程序签名。

Microsoft Windows [版本 10.0.19044.1288]
(c) Microsoft Corporation。保留所有权利。C:\Users\admin>cd DesktopC:\Users\admin\Desktop>xcopy C:\Windows\System32\notepad.exe .
C:\Windows\System32\notepad.exe
复制了 1 个文件C:\Users\admin\Desktop>SignTool\signtool.exe sign /f CodeSigning-WeiPang.pfx /p 12345678 notepad.exe
Done Adding Additional Store
Successfully signed: notepad.exeC:\Users\admin\Desktop>

在这里插入图片描述

我们再次查看记事本程序的属性,发现它已经被签名了。但是时间戳显示不可用,这是因为我们没有使用时间戳服务器,所以时间戳显示不可用。我们再次增加一个参数/t http://timestamp.digicert.com,使用时间戳服务器来签名。

C:\Users\admin\Desktop>SignTool\signtool.exe sign /f CodeSigning-WeiPang.pfx /p 12345678 /t http://timestamp.digicert.com notepad.exe
Done Adding Additional Store
Successfully signed: notepad.exe

再次查看属性,发现时间戳显示正常了。

在这里插入图片描述

总结

命令行签名的命令格式如下:

signtool sign /f 证书文件 /p 证书密码 /t 时间戳服务器 要签名的程序

三项代码签名证书的异同

  1. 证书类型:

    • Microsoft Individual Code Signing(个人代码签名)证书:适用于个人开发者或个人使用的代码签名证书。
    • Microsoft Commercial Code Signing(商业代码签名)证书:适用于商业实体或组织使用的代码签名证书。
    • 普通的Code Signing证书:这是一个更通用的术语,指的是由各种证书颁发机构(如Symantec、Comodo、DigiCert等)颁发的代码签名证书。
  2. 证书颁发机构:

    • Microsoft Individual Code Signing和Microsoft Commercial Code Signing证书由Microsoft自己的证书颁发机构颁发。
    • 普通的Code Signing证书由各种证书颁发机构颁发,不限于Microsoft。
  3. 应用范围:

    • Microsoft Individual Code Signing和Microsoft Commercial Code Signing证书主要用于Microsoft平台(如Windows操作系统、Office等)上的代码签名。
    • 普通的Code Signing证书可以用于多个平台,包括Windows、macOS、Linux等。
  4. 验证和信任:

    • Microsoft Individual Code Signing和Microsoft Commercial Code Signing证书在Microsoft平台上享有更高的信任级别,因为它们由Microsoft颁发。
    • 普通的Code Signing证书的信任级别取决于颁发机构的声誉和受信任的根证书列表。
  5. 价格和购买渠道:

    • Microsoft Individual Code Signing和Microsoft Commercial Code Signing证书通常具有较高的价格,并且只能通过Microsoft的官方渠道购买。
    • 普通的Code Signing证书的价格和购买渠道因证书颁发机构而异,通常有更多的选择。

总的来说,Microsoft Individual Code Signing和Microsoft Commercial Code Signing证书是专为Microsoft平台开发者和商业实体设计的,享有更高的信任级别,但价格较高且适用范围有限。普通的Code Signing证书则更通用,可以适用于多个平台,但信任级别可能因颁发机构的声誉而异。选择适合自己需求的证书时,可以考虑具体的使用场景、平台要求和预算等因素。

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

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

相关文章

文本转语音:微软语音合成标记语言 (SSML) 文本结构和事件

​ SSML 的语音服务实现基于万维网联合会的语音合成标记语言版本 1.0。 ​ 语音服务支持的元素可能与 W3C 标准不同。 每个 SSML 文档是使用 SSML 元素(或标记)创建的。 这些元素用于调整语音、风格、音节、韵律、音量等。 下面是 SSML 文档的基本结构…

CANdelaStudio 使用教程5 编辑DID

文章目录 在哪编辑DID的分类编辑快照数据添加 DID 在哪编辑 DID的分类 编辑快照数据 添加 DID

async函数和await关键字

async写在一个函数a前面,该函数变为异步函数,可在里面使用await关键字,await后面一般跟一个promise对象(axios函数返回一个promise对象,里面有异步任务),await会原地等待该异步任务结果&#xf…

单细胞seurat入门—— 从原始数据到表达矩阵

根据所使用的建库方法,单细胞的RNA序列(也称为读取(reads)或标签(tags))将从转录本的3端(或5端)(10X Genomics,CEL-seq2,Drop-seq&…

枚举的第一行

2023年11月26日 问题: 好奇enum的所声明的枚举类的第一行是什么 从java技术卷1中第五章5.6中,了解是枚举类的实例 验证 错误信息: 解释: 此时只有有参构造 在这个枚举类里不能使用空,大概意思是说不能使用空参创建实例 校验 在原有的基础上创建一个无参构造 结果:不再报错,第…

【教学类-06-13】20231126 (55格版)趣味题(一)1-9加法题(10倍)(整十相加)

作品展示 背景需求: 1、会做加法题的孩子5分钟内完成题目,太快了,所以为了拉平差异,需要给这些会做另外的题目,比如提供一些他们没有做过的“趣味题形”。 2、好多次,听见大班孩子在互相“考试”——“老…

CSS常用笔记

1. 脱离文档流&#xff0c;用于微调 {position: relative; top: 10px; right: 0; } 2. flex布局大法 <div class"demo"><div class"demo-1"></div><div class"demo-2"></div><div class"demo-3"&…

从源码重新真正认识RateLimiter(SmoothBursty实现)

前言 相信大家对于谷歌RateLimiter一定并不陌生,在项目中应该也经常拿来进行限流&#xff0c;但是对于其实现原理并不一定能用熟于心&#xff0c;本文带大家从源码探究RateLimiter的设计与具体实现。 RateLimiter的组成 从源码可以看到&#xff0c;RateLimiter由stopwatch与m…

Elasticsearch集群部署,配置head监控插件

Elasticsearch是一个开源搜索引擎&#xff0c;基于Lucene搜索库构建&#xff0c;被广泛应用于全文搜索、地理位置搜索、日志处理、商业分析等领域。它采用分布式架构&#xff0c;可以处理大规模数据集和支持高并发访问。Elasticsearch提供了一个简单而强大的API&#xff0c;可以…

全球SAR卫星大盘点与回波数据处理专栏目录

近年来&#xff0c;随着商业航天的蓬勃发展&#xff0c;商业SAR卫星星座成为美欧等主要航天国家的发展重点&#xff0c;目前已在全球范围内涌现出众多初创公司进军商业SAR领域&#xff0c;开始构建大规模商业微小SAR卫星星座&#xff0c;其所具有的创新服务能力将为传统的商业遥…

uniapp IOS从打包到上架流程(详细简单)

​ uniapp IOS从打包到上架流程&#xff08;详细简单&#xff09; 原创 1.登入苹果开发者网站&#xff0c;打开App Store Connect ​ 2.新App的创建 点击我的App可以进入App管理界面&#xff0c;在右上角点击➕新建App 即可创建新的App&#xff0c;如下图&#xff1a; ​ 3.…

VUE简易计划清单

目录 效果预览图 完整代码 效果预览图 完整代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>…

基于YOLOv5的视频计数 — 汽车计数实现

在视频中计数对象可能看起来有挑战性&#xff0c;但借助Python和OpenCV的强大功能&#xff0c;变得令人意外地易于实现。在本文中&#xff0c;我们将探讨如何使用YOLO&#xff08;You Only Look Once&#xff09;目标检测模型在视频流或文件中计数对象。我们将该过程分解为简单…

带你用uniapp从零开发一个仿小米商场_9. 轮播图组件封装及使用

导航栏有了,接下来就是轮播图了,轮播图如下, 因为uniapp 官方自己有轮播图,所以这里就不自己写了,直接使用uniapp的轮播图二次开发就好 uniapp的轮播图组件叫swiper ,感兴趣的朋友可以点击链接,直接去看官方文档,也可以看我这里实操 用hbuilderX编译uniapp的代码有一个好处…

C语言之内存函数

C语言之内存函数 文章目录 C语言之内存函数1. memcpy 使⽤和模拟实现1.1 memcpy 函数的使用1.3 memcpy的模拟实现 2. memmove 使⽤和模拟实现2.1 memmove 函数的使用2.2 memmove的模拟实现 3. memset 函数的使用4. memcmp 函数的使⽤ 1. memcpy 使⽤和模拟实现 函数声明如下&a…

《已解决: ImportError: Keras requires TensorFlow 2.2 or higher 问题》

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页: &#x1f405;&#x1f43e;猫头虎的博客&#x1f390;《面试题大全专栏》 &#x1f995; 文章图文并茂&#x1f996…

qt-C++笔记之不使用ui文件纯C++构建时控件在布局管理器作用下的默认位置和大小实践

qt-C笔记之不使用ui文件纯C构建时控件在布局管理器作用下的默认位置和大小实践 code review! 文章目录 qt-C笔记之不使用ui文件纯C构建时控件在布局管理器作用下的默认位置和大小实践1.ChatGPT解释2.ChatGPT——resize()和move()详解3.默认大小和位置——示例运行一4.默认大小…

excel表中慎用合并单元格,多用跨列居中

如下一个excel例表&#xff1a; 要将首行居中&#xff0c;最好的办法如下&#xff1a; 1、选中首行单元格 2、按下ctrl1&#xff0c;调出“设置单元格格式”&#xff0c;选中“对齐”&#xff0c;在“水平对齐”中选择“跨列居中” 3、完成任务 这样居中的好处是&#xff1a;可…

【NeRF】3、MobileR2L | 移动端实时的神经光场(CVPR2023)

论文&#xff1a;Real-Time Neural Light Field on Mobile Devices 代码&#xff1a;https://github.com/snap-research/MobileR2L 出处&#xff1a;CVPR2023 贡献&#xff1a; 设计了一套移动端实时的 R2L 网络结构 MobileR2L&#xff0c;在 iphone13 上渲染一张 1008x756…

RC-MVSNet:无监督的多视角立体视觉与神经渲染--论文笔记(2022年)

RC-MVSNet&#xff1a;无监督的多视角立体视觉与神经渲染--论文笔记&#xff08;2022年&#xff09; 摘要1 引言2 相关工作2.1 基于监督的MVS2.2 无监督和自监督MVS2.3 多视图神经渲染 3 实现方法3.1 无监督的MVS网络 Chang, D. et al. (2022). RC-MVSNet: Unsupervised Multi-…