StartCom(StartSSL)からコード署名証明書を持っています。私は彼らのサービスに非常に満足しています:彼らのカスタマーサービスは非常に速く、彼らの価格は非常にリーズナブルです。
コード署名証明書を取得する
コード署名証明書を取得するには、クラス2のID検証が必要です。StartComはプロセス全体をガイドします(優れた応答率、通常、私の経験では10分以内)。
詳細をすぐに確認したい場合は、このブログ投稿をお読みください。私は1時間以内に検証されました(Paypal経由で59.90ドルの料金)。
検証後、新しい秘密鍵と証明書署名要求(CSR)を生成します。公開鍵以外のすべてのフィールドは無視されることに注意してください。証明書のすべての情報は、CSRからではなく、ID検証中に入力した情報から推測されます。
これをWebインターフェースから送信すると、2年間有効な新しい証明書をすぐに取得できます(1時間以内に取得しました)。
問題:生涯署名OID
StartComのクラス2証明書には、Lifetime Signing OIDが設定されています。このビットのため、タイムスタンプが付けられていても、証明書の有効期限が切れると、署名されたコードの署名は無効になります。
私がこのOIDの理由についてEddy Nigg(StartComのCOO / CTO)に尋ねたところ、彼は答えました:
証明書の有効期限が切れてから最大20年間、CRLを動作させる必要があります。これは、EVレベルの証明書(ボリュームがはるかに少なく、さまざまな支払い条件)に対して実行できるものですが、この利点のためにクラス2の価格を引き上げます(コード署名はこのレベルのオプションの一部にすぎません)。
したがって、タイムスタンプは、拡張検証(EV)の後でのみ使用できます。これは、合法的に確立された組織でのみ使用でき、費用は199.90ドルです。したがって、個々の開発者はStartComからのコード署名証明書でタイムスタンプを使用できません。
長い間、私はこの制限を大きな問題だと考えていました。最近、気が変わりました。これは2年に1回だけ発生します。セキュリティ志向のユーザーは私のソフトウェアの最新バージョンを入手する傾向があり、古いバージョンのソフトウェアは引き続き機能します(使用したい人にとっては;ただし、検証済みの署名はありません)。
注:ライフタイム署名フラグが設定されている場合でも、常にコードにタイムスタンプを付けてください!タイムスタンプの付いた署名は、証明書が失効していても(証明書が失効する前に署名が作成された場合のみ)、証明書の有効期限まで有効です。
証明書の活用
StartComでは、検証に対してのみ支払います。本人確認は350日間有効で、この期間中は無料でコード署名証明書をリクエストできます。有効なコード署名証明書は1つだけ持つことができ、任意のコード(MSI、DLL、XPIなど)に署名できますが、ドライバーコードには署名できません(これにはEVが必要です)。
証明書の属性を変更するには、以前の証明書を取り消して、新しい証明書を要求する必要があります。証明書の失効には29.90ドルかかります。コード署名証明書を取得してから1日後にメールを変更したところ、例外なく無料で証明書が取り消されました(正に驚きました)。
有効期限
証明書の有効期限が近づくと(ほぼ2年後)、通知が届きます(2週間前)。確認済みのIDがまだ有効な場合(検証は350日後に期限切れになるため、59.90 $でIDを再度確認する必要があります)、以前の証明書を取り消さずに新しい証明書をリクエストできます。この新しいコード署名証明書で署名されたソフトウェアの新しいリリースを公開することを忘れないでください。以前のリリースではまもなく「(検証されていません)」または類似のものが表示されます。
OCSP
証明書を受け取ったら、Firefoxアドオンに署名しました。ただし、XPIファイルが正しく署名されていても、「(作成者は確認されていません)」と表示されます。FirefoxがStartComのOCSPサーバーに私の新しい証明書の失効ステータスを問い合わせたときに、現在の証明書ステータスを取得していないことがわかりました。おそらく関連するフォーラムトピック
約半日後、私の証明書はOCSPサーバーに知られ、私の名前は期待通りに表示されました。教訓:新しい証明書を取得したら、約1日待ってから、新しい署名でソフトウェアを公開してください。