###コードサイニング証明書とは
コードサイニング証明書は、ソフトウェアにデジタル署名を行う電子署名用の証明書です。
ソフトウェアの配布元を認証し、なりすましや内容の改ざんなどがされていないことを保証し、ユーザの手元に責任をもってソフトウェアを届けることができます。
- 誰が作ったのか
- 改ざんなどされていないこと
を保証するためのものなんですね。
###署名の手順
- コードサイニング証明書取得
- 配布するコードのハッシュ値を生成
- コードサイニング証明書の秘密鍵を使ってハッシュ値を暗号化
※デジタル署名という - 配布するコード、デジタル署名されたハッシュ値、コードサイニング証明書のパッケージを作成
###ダウンロード時の検証手順
- コードサイニング証明書の有効性を確認
- コードサイニング証明書に含まれる公開鍵を取得
- コードと暗号化されたハッシュ値に分離
- 暗号化されたハッシュ値を公開鍵で複合
- コードのハッシュ値を作成
- 複合したハッシュ値とコードから作成したハッシュ値を突合
- 同一であれば改ざんがなく真正であることが証明される
なるほど、考えた人頭いい。
###タイムスタンプの取得が必須
- タイムスタンプ付きで署名されたコードは、証明書が有効期限切れになっても署名が有効。
- タイムスタンプなしでも署名はできるが、証明書の有効期限が切れると署名も無効になってしまいアプリケーションの利用ができなくなってしまう。
参考ページ
コードサイニング (Codesigning) 証明書とは:DigiCert(デジサート)
コードサイニング証明書とは?|GMOグローバルサイン【公式】
[コードサイニング証明書のタイムスタンプとは]
(https://knowledge.digicert.com/ja/jp/solution/SO23074.html)
タイムスタンプとは何ですか