如何申请和使用代码签名证书
代码签名证书简介
代码签名证书用于对软件代码进行数字签名,以验证软件的发布者身份并确保代码的完整性。它向用户保证软件来自可信的来源,并且在发布后未被篡改或恶意修改。这对于构建用户信任和防止恶意软件传播至关重要。
代码签名证书的用处:
- 验证软件发布者身份: 代码签名证书验证软件的来源,使用户确信软件来自合法的开发者或组织。
- 确保代码完整性: 数字签名可以证明代码自签名以来未被修改,防止恶意软件注入或篡改。
- 提升用户信任: 经过签名的软件可以消除操作系统或浏览器发出的安全警告,提升用户对软件的信任度,鼓励用户安装和使用。
- 防止恶意软件传播: 代码签名可以帮助用户识别和避免安装未签名或来自未知来源的潜在恶意软件。
通过ServBay申请代码签名证书
打开SSL证书管理面板: 在ServBay的侧边栏中,点击 "SSL Certificates" 即可进入证书管理平台。
点击添加按钮: 点击右上角的 "+" 按钮。
填写证书信息: 在 "Request Certificate" 页面中,填写以下信息:
- Common Name: 填写您的组织名称或个人姓名。例如
ServBay, LLC
或Sam NG
。 - Usage Purpose: 选择证书用途,选择
Code Signing
。 - Request Method: 选择
ServBay CA
。 - Issuer: 选择
ServBay User CA
。 - Algorithm: 选择加密算法,例如
ECC
或RSA
。 - Key Length: 选择密钥长度,例如
384
或2048
。 - Password: 重要! 设置一个密码来保护您的私钥。请牢记此密码,因为丢失后将无法找回。默认密码是
ServBay.dev
。
- Common Name: 填写您的组织名称或个人姓名。例如
点击 "Request" 按钮: 完成所有步骤后,点击 "Request" 按钮提交证书申请。ServBay会自动签发证书。
证书导出和使用
- 进入SSL证书管理面板。
- 找到签发的代码签名证书。
- 点击操作按钮: 点击证书右侧的导出图标。
- 选择导出目录: 在弹出的窗口中,选择证书导出后要保存的位置。
- 使用代码签名工具: 将导出的
.p12
文件导入到您的代码签名工具(例如codesign
(macOS),signtool
(Windows) 等)中,并使用之前设置的密码进行解锁。之后,您就可以使用该证书对您的代码进行数字签名。
使用代码签名证书对代码进行签名的例子
bash
$ gcc test.c -o /tmp/test # 使用 gcc 生成一个用于测试的二进制文件
$ security find-identity -v -p codesigning # 查找可以用于代码签名的证书
1) ...
2) 99C183BC3796067FAFBA6F232D1C3C3425DAABDA "ServBay, LLC"
2 valid identities found
$ codesign -f -s "99C183BC3796067FAFBA6F232D1C3C3425DAABDA" --timestamp /tmp/test # 使用上面找到的证书 ID 来进行签名
test: replacing existing signature
$ codesign -dvvv /tmp/test # 验证签名是否正确
Executable=/tmp/test
Identifier=test
Format=Mach-O thin (arm64)
CodeDirectory v=20400 size=445 flags=0x0(none) hashes=9+2 location=embedded
Hash type=sha256 size=32
CandidateCDHash sha256=777e597ce37ad27e7b90d2aaaeeb9f1449170639
CandidateCDHashFull sha256=777e597ce37ad27e7b90d2aaaeeb9f1449170639a73e8090b1d9d1245d7f191b
Hash choices=sha256
CMSDigest=777e597ce37ad27e7b90d2aaaeeb9f1449170639a73e8090b1d9d1245d7f191b
CMSDigestType=2
CDHash=777e597ce37ad27e7b90d2aaaeeb9f1449170639
Signature size=7247
Authority=ServBay, LLC
Authority=ServBay Public CA - ECC Code Signing
Authority=ServBay Public CA - ECC Root
Timestamp=Nov 7, 2024 at 18:26:48
Info.plist=not bound
TeamIdentifier=not set
Sealed Resources=none
Internal requirements count=1 size=80
$ echo "abcde" > test # 尝试破坏二进制文件的证书签名
$ codesign -dvvv test # 再次验证签名
test: code object is not signed at all
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
证书续期
ServBay的代码签名证书有效期是800天。证书到期前,你可以点击右侧的按钮进行续期。每次重新续期,有效期为当前日期+800天。
证书删除
- 进入SSL证书管理面板。
- 找到需要删除的证书。
- 点击操作按钮: 点击证书右侧的垃圾桶图标。
- 确认删除: 在弹出的菜单中选择 "Delete",并确认删除操作。
总结
希望以上文档能够帮助您在ServBay平台上申请和使用代码签名证书。如果您有任何疑问,请联系ServBay客服寻求帮助。