コード署名証明書の有効期限が切れるとどうなりますか?
-
11-07-2019 - |
質問
XBAPに署名するために、VeriSignまたはThawteからコード署名証明書を購入することを検討しています。私の質問はこれです:その証明書の有効期限が切れるとどうなりますか? 299ドルと599ドルは、1年/ 2年証明書のかなりの価格です。証明書の有効期限が切れるたびに新しく署名したビルドを顧客に提供しなければならない場合は、自分用の証明書を作成する手間をかけるだけです。今。
自分の証明書を作成するのが気に入らないのは、XBAPを使用するすべてのクライアントマシンに証明書を配布するのが難しいことです。私のアプリケーションはLANでのみ使用されるため、常にWindowsインストーラーを使用して、自家製の証明書をインストールできると思います(これを行う方法はわかりませんが、誰にもアイデアはありますか?)。
部分信頼アプリケーションを配信する場合、これは実際には問題になりませんが、アプリケーションはWCFサービスと通信するため、Web権限が必要です。したがって、部分信頼と完全信頼の間の灰色の領域にあります。証明書がなくても、XBAPを読み込もうとすると、楽しいole Trust Not Grantedメッセージが表示されます。
アイデアはありますか
解決
クローズド(LAN)環境で使用する予定の場合は、独自のCAをセットアップする必要があります。 Windows Serverバージョンには、使いやすい認証局が含まれていますが、 openssl によって提供されるdemoCAを使用して、最小限のCAをセットアップするのがさらに簡単です。 a>、いくつかのスクリプトで構成されています。 Windowsの Cygwin またはネイティブ。このdemoCAは、opensslコマンドを呼び出して要求を生成したり、証明書/ crlsに署名したりするいくつかのperl / bashスクリプトで構成されています。
独自のCAがある場合、インストールする必要があるのはCAルート証明書であるため、CA証明書は同じままなので、ユーザー証明書を更新する手間はもうありません。通常、CA証明書の有効期間は5〜10年ですが、必要なだけ設定できます(自分のCAであることを思い出してください)。
すべてのクライアントマシンにCA証明書がインストールされます。アプリケーションがWindowsシステムのセキュリティを信頼している場合、IExplorer Certificate Authoritiesキーストアにインストールする必要があります。 Javaアプリケーションを使用する場合は、使用するJavaキーストア内にCA証明書を配布する必要があります。
他のヒント
証明書が有効な間にコードにタイムスタンプを付けると、有効期限が切れた証明書が有効になります。
コード署名証明書はどのくらいの期間使用できますか
- コード署名証明書は、証明書の購入時に選択したライフサイクルに応じて、1年または2年間有効です。注:Microsoft®Authenticode®(多目的)では、証明書の有効期限が切れたときにコードが期限切れにならないように、署名済みコードにタイムスタンプを付ける必要があります。
コード署名証明書の有効期限が切れた後、タイムスタンプ付きコードは有効ですか?
- Microsoft®Authenticode®(多目的)を使用すると、署名済みコードにタイムスタンプを付けることができます。タイムスタンプは、ブラウザがタイムスタンプを検証するため、証明書の有効期限が切れてもコードが期限切れにならないようにします。タイムスタンプサービスは、VeriSignの厚意により提供されています。コードの署名時にタイムスタンプサービスを使用する場合、コードのハッシュがVeriSignのサーバーに送信され、コードのタイムスタンプが記録されます。ユーザーのソフトウェアは、信頼されるべきではない有効期限が切れた証明書で署名されたコードと、コードが署名された時点で有効であるがその後有効期限が切れた証明書で署名されたコードを区別できます。
WTD_LIFETIME_SIGNING_FLAGが設定されている証明書に注意してください:証明書で署名されたプログラムは、証明書が期限切れになった後でも、その証明書が期限切れになった後で無効であることを意味します。 tが変更され、証明書は署名時に有効でした。
これは更新も影響します。顧客が会社のすべてのプログラムを信頼するためにボックスをチェックしても、更新プログラムが同じ証明書で署名されていない場合(またはその証明書の有効期限が切れている場合)、信頼は失敗します
ライフタイム署名セマンティクスを使用したタイムスタンプ処理
タイムスタンプ付き署名が無期限に正常に検証されることを望まないアプリケーションまたは認証機関には、2つのオプションがあります:
•発行者の署名証明書にライフタイム署名者のOIDを設定します。
発行者の署名証明書に、PKIXコード署名OIDに加えてライフタイム署名者OIDが含まれている場合、署名にタイムスタンプが付いていても、発行者の署名証明書の有効期限が切れると署名は無効になりますライフタイム署名者のOIDは次のように定義されます。
szOID_KP_LIFETIME_SIGNING 1.3.6.1.4.1.311.10.3.13
•WinVerifyTrustを呼び出すときに、WINTRUST_DATA構造体にWTD_LIFETIME_SIGNING_FLAGを設定します。
WinVerifyTrustの呼び出し元がWINTRUST_DATA構造体でWTD_LIFETIME_SIGNING_FLAGを設定し、発行者の署名証明書の有効期限が切れている場合、WinVerifyTrustは署名にタイムスタンプが付いていても署名を無効として報告します。
発行者がライフタイム署名者OIDを含むコード署名証明書を失効させるか、WinVerifyTrustの呼び出し元がWINTRUST_DATA構造体にWTD_LIFETIME_SIGNING_FLAGを設定すると、WinVerifyTrustは次の両方の条件が満たされた場合に署名を有効として報告します:
•署名は、失効日の前にタイムスタンプが付けられました。
•署名証明書はまだ有効期間内です。有効期限が切れると、署名は無効になります。
これは、StartSSL証明書に関する深刻な問題です。証明書にそれほど費用がかからないという制限があることは驚くことではありませんが、製品の説明で明確にするのではなく、細かい制限や古いフォーラムの投稿にこの制限を埋めることはビジネスとしては貧弱です。彼らは将来それを修正するかもしれませんし、他の人は同じ制限があるかもしれないし、そうでないかもしれません。
尋ねるのを知らなかったと思う?笑...まあ、生きて学びましょう。
バイナリに署名するときにタイムスタンプを追加するようにすれば、証明書の有効期限が切れたときにそれらに再署名する必要はありません。 " / t http://timestamp.verisign.com/scripts/timstamp.dllを追加するだけです。 a>" signtoolのコマンドラインに入力すると、証明書が失効し、CAが信頼されていない限り、デジタル署名は常に有効としてマークされます。
コード署名証明書が非常に高価な理由は、誰かがあなたが本人であることを確認する必要があるからです。私の場合、彼らは住所と電話番号を確認し、電話をかけてきました。ただし、Comodoの証明書は少し安いようです。
コード署名証明書は「管理」されていません更新されないことを意味します...有効期限が切れたら新しいものを購入する必要があります。
証明機関(CA)をセットアップできます-Windowsのみのショップの場合はWindowsベースのCAを使用しますが、そうでない場合は DogTag証明書システム。
独自のCAを作成する場合は、パブリックCA証明書をエクスポートし、そのCAによって発行されたコード署名証明書によって署名されたコード/スクリプトを実行するサーバーにインストールする必要があります(したがって、ルートCAとして信頼されます) CA。これは、X年ごとに証明書を支払うのに比べてはるかに安い(無料?)です-さまざまな理由/用途で発行できる他の証明書は言うまでもありません!
署名プロセスのタイムスタンプを回避するか、証明書の有効期限内にタイムスタンプを設定する必要があります。 PEに署名などのツールを使用すると、これらのパラメーターを制御できます