自分のDLLファイルに自分のAuthenticodeタイムスタンプサービスでタイムスタンプを付けたいのですが。これは可能ですか?どうすればこれを達成できますか?
5 に答える
カスタムHTTPタイムスタンプサーバーを作成する必要があります。RFC 3161タイムスタンププロトコル(TSP)ルールに従う必要があります。
Windows SDKのSigntool.exeなどのツールを使用してauthenticode用にDLLに署名する場合、タイムスタンプサーバーのURLを指定できます(/tスイッチを使用します。/trおよび/tdも参照してください)。次に、サーバーをポイントします。
関連する質問については、SOでここを参照してください:信頼できるタイムスタンプ-形式を理解する(rfc3161)
独自のタイムスタンプサービスを開発できます。TSP(RFC 3161)サーバーを作成できますが、AuthenticodeはRFC 3161を使用せず、MSDNの記事(実装も可能)で説明されているPKCS#7 / PKCS#9形式を使用します。SecureBlackboxコンポーネントには、両方の形式をサポートするタイムスタンプサーバーコンポーネントが含まれています。更新:Authenticodeの最近の更新では、標準のRFC3161タイムスタンプが使用されます。
ただし、問題は、タイムスタンプの署名に使用する証明書を取得することです。この証明書は、いずれかのCAによって発行される必要があります。私が理解しているように、タイムスタンプサーバーの実行の管理およびインフラストラクチャの側面に関して厳しい要件があります。特に、安全なタイムスタンプハードウェアが必要です。私はこの質問を深く掘り下げませんでしたが、これらの側面はコードを書くよりもはるかに複雑です。
それでも、独自のPKIインフラストラクチャを実行している場合(独自の信頼されたルート証明書とCA証明書を持っている場合)、信頼できるタイムスタンプ証明書を持つ問題は自動的に解決されます。独自の証明書を生成できます。
SignServerを使用して、Authenticodeタイムスタンプ(および/またはRFC#3161)をサポートする独自のタイムスタンプ機関(TSA)を設定できます。
ダウンロードとインストールの手順については、https://www.signserver.orgを参照してください。要約すると、重要な手順は次のとおりです。
前提条件があることを確認してください。
- Java
- アプリケーションサーバー(つまりWildFly)
- デプロイするためのApacheAnt
https://signserver.orgまたはhttps://sourceforge.net/projects/signserver/files/signserver/4.0/から4.0リリースをダウンロードします。
アプリケーションサーバーを構成する
- HTTPSの場合(オプション)
- Webサービスを機能させるには
- 最新のセキュリティ修正を含むパッチ
SignServerデプロイメントを構成する
- conf/signserver_deploy.propertiesでdatabase.name=nodbおよびdatabase.nodb.location=/ an / empty / folder / as/dbを設定します
SignServerをデプロイします
- APPSRV_HOME = / opt /wildfly-9/をエクスポートします
- bin/antデプロイ
- アプリケーションサーバー/opt/wildfly-9/bin/standalone.shを起動します
サーバーが起動したことを確認します
- bin / signserver getstatus brief all
暗号トークンを設定する
- bin / signserver setproperties doc / sample-configs / keystore-crypto-configuration.properties
- bin / signserver reload 1
- bin / signserver getstatus brief all
サンプルのタイムスタンプ署名者を設定します
- bin / signserver setproperties doc / sample-configs / qs_timestamp_configuration.properties
- bin / signserver reload 2
- bin / signserver getstatus brief all
タイムスタンプ署名者をテストする
- bin / signclientタイムスタンプhttp:// localhost:8080 / signserver / process?workerName = TimeStampSigner
テスト用にこれが必要であると仮定して、/ trスイッチでsigntool.exeを使用することに満足している場合は、opensslがこれを十分に実装しているため、RFCを確認する必要はありません。お好みの言語でHTTPPOSTハンドラーを記述し、投稿されたデータを「openssl ts -reply」に逐語的に渡し、opensslTS応答データを送り返すだけです。これは、RFCに厳密に準拠していなくても、「signtool.exe verify/pa」をだますのに十分です。
編集:オープンソースのJava Signserverプロジェクトでは、MSauthenticode(/ t)とrfc3161(/ tr)のタイムスタンプをすぐに処理できるサーバーが提供されているようです。Signserverの構成には依存関係が多すぎるため、代わりにMSAuthenticodeタイムスタンプの単体テストをハッキングし、小さなHTTPサーバーをテストケースに追加しました。ほとんど作業を行わずに(Javaスキルはせいぜい平凡です)、authenticodeタイムスタンプを実行しています。開発用のサーバーであり、このように作成されたタイムスタンプがこの問題の対象ではないことを確認しました。ソースコードをリリースすることはできませんが、このヒントに従うと、何かがすぐに機能するはずです。
https://PKIaaS.ioは、RFC3161およびMicrosoftAuthenticode準拠のタイムスタンプサーバーを提供します。サイトで認証局を作成すると、「CAサービスURL」のリストにタイムスタンプURLが表示され、署名のためにタイムスタンプ要求を送信できます。