コード署名証明書の申請と使用方法
コード署名証明書とは
コード署名証明書は、ソフトウェアコードをデジタル署名するためのものです。これにより、ソフトウェアの発行者の身元が確認され、コードの完全性が保証されます。ユーザーに対して、信頼できる発行元からのソフトウェアであり、公開後に改ざんや悪意のある変更がされていないことを示します。ユーザーの信頼を構築し、マルウェアの拡散を防ぐために非常に重要です。
コード署名証明書の用途:
- ソフトウェア発行者の身元確認: コード署名証明書はソフトウェアの出所を確認し、ユーザーがそのソフトウェアが合法の開発者または組織からのものであると安心できるようにします。
- コードの完全性保証: デジタル署名は、署名されて以来コードが変更されていないことを証明し、マルウェアの挿入や改ざんを防ぎます。
- ユーザーの信頼を向上: 署名済みのソフトウェアは、オペレーティングシステムやブラウザからのセキュリティ警告を削減し、ユーザーのソフトウェアに対する信頼を向上させ、インストールや使用を促進します。
- マルウェアの拡散防止: コード署名は署名されていない、または未知の出所からの潜在的なマルウェアのインストールをユーザーが識別して回避するのを助けます。
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のカスタマーサポートにお問い合わせください。