ServBayコード署名証明書の申請と利用方法
概要
ソフトウェアの開発や配布プロセスにおいて、コード署名はユーザーの信頼性を確保し、ソフトウェアの改ざんを防ぐために不可欠なステップです。コードへデジタル署名を施すことで、開発者はソフトウェアの発行元を証明し、署名以降にコードが改ざんされていないことを保証できます。
ServBayは、開発者がローカル環境でServBay内部CAによるコード署名証明書を簡単に申請・利用できる機能を提供しています。この証明書は以下のような用途に適しています:
- ローカル開発やテスト段階でのソフトウェア署名。実際の署名フローをシミュレート可能。
- チームや信頼できる環境内で利用するスクリプト・ツール・アプリケーション等の署名とその出自・整合性の検証。
- 高額な商用コード署名証明書を購入せず、コード署名全体の流れを学び実践したい場合。
重要事項: ServBay内部CAによるコード署名証明書は公開信頼型CA(Let's Encrypt、Comodoなど)による発行ではありません。そのため、OSやブラウザなどでデフォルトで信頼されることはなく、一般ユーザーや商用ソフト配布、アプリストア提出、OSのセキュリティチェック(macOS Gatekeeperの警告等)が必要な用途には不適切です。主にローカル開発・テスト・管理された内部環境での署名用途に限定してください。
コード署名証明書について
コード署名証明書は、実行ファイル・スクリプト・ライブラリなどのソフトウェアコードにデジタル署名を付与するための証明書です。主な役割は信頼構築・セキュリティ確保です:
- ソフトウェア発行者の認証: 証明書には発行者情報が含まれ、デジタル署名によりソフトウェアが証明書の開発者や組織から配布された正規のものであることを示します。
- コード整合性の保証: 署名時にハッシュ値が生成され、秘密鍵で暗号化されます。検証時はシステムがハッシュ値を再計算し、公開鍵で署名内のハッシュ値と照合します。コードが改ざんされるとハッシュ不一致となり、署名検証でエラーになります。
- ユーザー信頼性向上: OSやセキュリティソフトは未署名や発行元不明のソフトに警告を表示することがありますが、信頼された証明書で署名することで(CAを手動で信頼チェーンへ追加する場合等)インストール時の警告を軽減しやすくなります。
- マルウェア流通防止: コード署名で正規ソフトウェアと偽装マルウェア等を判別しやすくなり、悪意のあるソフトの拡散リスク抑止に寄与します。
ServBayでのコード署名証明書の申請方法
ServBayでは、ローカル環境でのコード署名証明書の取得手順が非常に簡単です。
SSL証明書管理パネルの起動: ServBayアプリのサイドバーより「SSL Certificates」をクリックします。
新規証明書リクエストの開始: 「SSL Certificates」管理画面右上で「+(追加)」ボタンをクリック。
証明書情報の入力: 「Request Certificate」画面で下記必須項目を入力します:
- Common Name(コモンネーム): 組織名または個人名を入力。例:
ServBay, LLC
またはServBay Demo Developer
- Usage Purpose(用途): 利用目的として
Code Signing
を選択してください。 - Request Method(申請方法): 証明書の発行方式として
ServBay CA
を選択(ServBay内蔵の証明書発行機能)。 - Issuer(発行者): この証明書の発行元となるServBay内部CAを選びます。通常は
ServBay User CA
を指定します。 - Algorithm(アルゴリズム): 鍵ペア生成に用いる暗号アルゴリズムを選択。典型例は
ECC
(楕円曲線暗号)またはRSA
。ECCは同等強度で鍵長が短く高い安全性を持ちます。 - Key Length(鍵長): 選んだアルゴリズムに応じた鍵長(ECCなら
384
、RSAなら2048
や4096
等)。長いほど安全性は高まりますが処理速度がやや低下します。 - Password(パスワード): 非常に重要! 証明書秘密鍵保護用の強固なパスワードを設定してください。証明書(
.p12
ファイル)エクスポートや署名ツール利用時に必要です。ServBay側でパスワードの復旧は不可なので必ず控えておいてください。カスタムパスワードの指定を推奨します。(※サンプル画像のServBay.dev
は例示用です。実際には必ず独自の強力なパスワードを設定してください。)
(サンプル画像。ご自身の情報に基づいて入力してください)
- Common Name(コモンネーム): 組織名または個人名を入力。例:
証明書申請の送信: 必要事項を入力・確認後、「Request」をクリック。指定した
ServBay User CA
が証明書の発行を自動で行います。
証明書のエクスポートと利用
申請後は、コード署名証明書を標準フォーマットでエクスポートし、各コード署名ツールに取り込みます。ServBayでは.p12
(PKCS#12)形式ファイルで提供されます。
SSL証明書管理パネルへアクセス: サイドバーから「SSL Certificates」をクリック。
対象のコード署名証明書を特定: 証明書一覧で「Code Signing」用途のものを見つけます。
エクスポート操作を実行: 右側のエクスポートアイコン(右向き矢印型)をクリック。
保存ディレクトリ選択とパスワード設定: エクスポートウィンドウで保存ディレクトリを選択。ファイル形式は
.p12
です。このファイルには証明書および秘密鍵が含まれるためパスワードで保護。申請時設定のパスワードが必要となります。コード署名ツールへの証明書インポート: エクスポートした
.p12
ファイルを各コード署名ツールに取り込みます。OS・開発環境により異なります:- macOS: 標準コマンドラインツール
codesign
を利用。まず.p12
ファイルを「キーチェーンアクセス」(Keychain Access)へインポートしてください。 - Windows: Windows SDKの
signtool.exe
コマンドラインツールを利用。Windowsの証明書マネージャに.p12
ファイルをインポートしてください。 - その他のプラットフォーム/ツールチェーン: Javaの
jarsigner
、.NETのSignTool
、Go等の外部署名ツール等、お使いの技術スタックやビルドツールの指示に従い.p12
ファイルと秘密鍵パスワードを指定して利用してください。
- macOS: 標準コマンドラインツール
証明書インポート後は、お手持ちのアプリ・バイナリ・ドライバ等にデジタル署名を行う準備が完了します。
コード署名証明書を使った署名手順例(macOS編)
以下は、macOS上でServBay発行の.p12
証明書とcodesign
ツールを使い簡単なバイナリに署名・検証を行う例です。
ServBayからエクスポートした.p12
をキーチェーンアクセスへインポート・正しいパスワードで追加済みであることを前提とします。
# 1. 署名テスト用のC言語ソースコードを作成
# 下記内容を test.c で保存
cat <<EOF > test.c
#include <stdio.h>
int main() {
printf("Hello, ServBay Code Signing!\n");
return 0;
}
EOF
# 2. gccでCファイルをコンパイルしバイナリを生成
# -o /tmp/test で出力ファイル名を指定
gcc test.c -o /tmp/test
echo "コンパイル完了:/tmp/testを生成"
# 3. コード署名に使用可能な証明書Identityを一覧取得
# -v 詳細表示、-p codesigning はコード署名証明書のみにフィルター
# 証明書の Common Name またはハッシュ値を控える
security find-identity -v -p codesigning
# 出力例:
# 1) ABCDEF1234567890ABCDEF1234567890ABCDEF12 "Apple Development: Your Name (XYZ123)"
# 2) 99C183BC3796067FAFBA6F232D1C3C3425DAABDA "ServBay Demo Developer"
# 2 valid identities found
# ServBay証明書のハッシュ値またはCommon Name(例:"ServBay Demo Developer")を確認
# 4. 上記で確認した証明書でバイナリに署名
# -f 署名強制、-s 署名Identity指定(ハッシュ値または一意のCommon Name)
# --timestamp タイムスタンプ付与(推奨)
# /tmp/test 署名対象ファイル
codesign -f -s "ServBay Demo Developer" --timestamp /tmp/test
# もしくはハッシュ値を用いて:
# codesign -f -s "99C183BC3796067FAFBA6F232D1C3C3425DAABDA" --timestamp /tmp/test
echo "/tmp/testにコード署名証明書で署名済み"
# 5. 署名の検証
# -dvvv で詳細検証
codesign -dvvv /tmp/test
# "Authority" フィールドは証明書名とServBay CAチェーンがあるか確認
# "Signature size""CDHash""Timestamp"等で署名状態を確認
# 出力例(抜粋):
# Authority=ServBay Demo Developer
# Authority=ServBay User CA - ECC Code Signing
# Authority=ServBay Public CA - ECC Root
# Timestamp=2024年11月7日 18:26:48(サンプル日時)
# 6. ファイル内容を変更して署名を無効化
# 任意のデータを書き込みしてハッシュを変更
echo "abcde" >> /tmp/test
echo "/tmp/testの内容を変更しました"
# 7. 再度署名を検証
# この時検証は失敗するはずです
codesign -dvvv /tmp/test
# 例:
# /tmp/test: code object is not signed at all
# または類似エラー。内容変更により署名が無効化されたことを示します。
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
補足:
security find-identity
:キーチェーン内の特定用途(例:codesigning
)証明書のリスト取得用。codesign -f -s "Your Identity"
:実際の署名処理コマンド。--timestamp
オプションで信頼された時刻を付与(証明書期限切れ後でもタイムスタンプ内の時刻が有効であれば署名は有効)。codesign -dvvv
:署名や証明書チェーン、整合性、タイムスタンプ等を詳細検証。- 最後のファイル改変~再検証で整合性検証の概念を具体的に解説。内容変更で署名が無効になる様子を体験できます。
証明書の更新(リニューアル)
ServBay発行のコード署名証明書は一定の有効期限(通常800日)があります。期限切れ前に管理パネルから更新が可能です。
- SSL証明書管理パネルへアクセス
- 更新したい署名証明書を選択
- 更新操作をクリック: 右側の循環型アイコンをクリック
- 更新の確定: ボタン押下後、新たな証明書が発行され、有効期間が本日から800日に更新されます。
証明書の削除
不要なコード署名証明書はServBayから削除できます。
- SSL証明書管理パネルへアクセス
- 削除したい証明書を特定
- 削除操作をクリック: 右側のゴミ箱アイコンをクリック
- 削除の最終確認: 確認メニューで「Delete」を選択。削除後は元に戻せませんのでご注意ください。
よくある質問(FAQ)
Q: ServBayのコード署名証明書は無料ですか?
A: はい。ServBay内部CAから発行される証明書はServBayの組み込み機能で、追加費用は不要です。
Q: ServBay証明書で商用ソフトウェアの署名・配布はできますか?
A: できません。 ServBayの証明書は内部CA発行であり、OSやアプリストア等では標準で信頼されません。ローカル開発やテスト・内部利用に限られます。公開配布には信頼性のある公認CAのコード署名証明書をご用意ください。
Q: エクスポートした.p12
のパスワードを忘れた場合はどうすれば?
A: ServBayは秘密鍵パスワードを保持しません。忘れた場合、その証明書の秘密鍵利用やエクスポートはできませんので、該当証明書を削除し、再度新規申請を行ってください。
Q: ServBay User CAをOSの信頼ストアに追加できますか?
A: 可能です。ServBay User CA証明書をエクスポートし、手動でOSやブラウザの信頼ストアへインポートしてください。
まとめ
ServBayのコード署名証明書機能は、開発者がローカル開発環境で手軽にソフトウェア署名のテストや内部ツール署名を実施する上で非常に便利です。本ガイドに沿って申請・エクスポート・運用の流れを理解し、実践いただけます。公開信頼が必要なケース以外(開発・検証等)で積極的にご活用ください。
申請・利用でご不明な点は、ServBay公式ドキュメントやコミュニティサポートの活用をおすすめします。