本文目录导读:

- 为软件/代码签名(数字证书签名)
- 使用OpenSSL进行文件数字签名(验证文件完整性)
- 对PDF文档进行数字签名(Adobe Approve)
- 对代码或文件进行GPG签名(用于开源项目/邮件)
- 如何选择工具?
签名文件”,通常有以下几种常见的含义,请根据你的具体需求(是代码开发、文档验证,还是普通文件加密)选择对应的方法:
为软件/代码签名(数字证书签名)
用途:防止代码被篡改,验证发布者身份(如Windows软件、Android APK)。
- Windows (Authenticode签名):
- 工具:
SignTool.exe(Windows SDK自带)、signtool。 - 步骤:
- 获取数字证书(如从CA购买或自签名)。
- 打开命令提示符(管理员)。
- 使用命令:
signtool sign /fd SHA256 /a /tr http://timestamp.digicert.com /td SHA256 /v "你的文件路径.exe"
(
/tr指定时间戳服务器,确保签名在证书过期后仍有效。)
- 工具:
- Android (APK签名):
- 工具:
apksigner(Android SDK Build Tools自带)。 - 步骤:
- 生成密钥库(
keytool -genkey)。 - 使用:
apksigner sign --ks your.keystore your_app.apk
- 生成密钥库(
- 工具:
- macOS/iOS (Apple签名):
- 工具:
codesign(Xcode自带)。 - 步骤:
codesign --force --sign "Developer ID Application: Your Name" --deep /path/to/your.app
- 工具:
使用OpenSSL进行文件数字签名(验证文件完整性)
用途:对任意文件(PDF、压缩包等)生成签名,配合公钥验证是否被篡改。
- 步骤:
- 生成私钥和公钥(只需一次):
openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048 openssl rsa -pubout -in private_key.pem -out public_key.pem
- 对文件签名:
openssl dgst -sha256 -sign private_key.pem -out signature.bin 你的文件.docx
- 验证签名(对方需要你的公钥):
openssl dgst -sha256 -verify public_key.pem -signature signature.bin 你的文件.docx
- 生成私钥和公钥(只需一次):
对PDF文档进行数字签名(Adobe Approve)
用途:使PDF文件具有法律效力的电子签章。
- 工具:Adobe Acrobat Pro、Foxit PDF Editor 或 在线免费工具(如 Smallpdf、iLovePDF)。
- 步骤(以Adobe Acrobat为例):
- 打开PDF,点击右侧工具栏的 “填写和签名”。
- 点击 “签名” -> “添加签名”。
- 输入文字、绘制签名或上传图片。
- 点击文档中位置放置签名。
对代码或文件进行GPG签名(用于开源项目/邮件)
用途:证明文件是你发布的(如Linux内核、Git提交)。
- 工具:
GnuPG(GPG)。 - 步骤:
- 生成密钥:
gpg --full-generate-key。 - 签名文件:
gpg --detach-sign --armor 你的文件.txt(生成.asc签名文件)。 - 验证:
gpg --verify 你的文件.txt.asc 你的文件.txt。
- 生成密钥:
如何选择工具?
| 目的 | 推荐工具 | 备注 |
|---|---|---|
| Windows软件 | SignTool |
微软官方,需证书 |
| Android应用 | apksigner |
Android官方 |
| 通用文件完整性 | openssl |
免费,跨平台,程序员常用 |
| PDF电子签章 | Adobe Acrobat | 最专业,但收费 |
| 代码/提交验证 | GPG (GnuPG) |
开源社区标准 |
如果你是指“在Windows下右键签名”,那通常是系统的“数字签名”功能,需要专门的签名工具(如SignTool)或第三方软件(如FireDaemon Pro)来自动化签名流程。
如果你有更具体的使用场景(比如对某个特定格式的文件、在某个操作系统上),可以补充说明,我可以给出更精确的指令。
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。