1

私は問題があります。私の組織では、XPI ファイル タイプのコード署名を実行する必要があります。証明書とその秘密鍵は、ハードウェア セキュリティ モジュールで保護する必要があります。これはセキュリティ上の理由によるものです。

Mozilla が提供する既存の NSS Signtool では、Java キーストア、Windows の CSP、または Mac のキーチェーンを認識するツールを取得する方法を見つけることができませんでした。調査したすべてのソリューションは、NSS Signtool がデフォルトで使用するように構成されているソフトウェア データベースにキーをコピーする必要があることを示しています。

XPI ファイル タイプに署名する必要があります。Java、Windows CSP、または Mac キーチェーンで動作するソリューションを見つけようとしている理由は、Thales の既存の HSM テクノロジに、モジュールと通信するためのインターフェイスとしてこれら 3 つのオプションがあるためです。 .

XPISigner と呼ばれる Java ベースのファイルがあることを確認しましたが、このソリューションはサポートされなくなりました。現在の Java バージョンとの前方互換性がない方法で、Luna HSM のみで動作する唯一のバージョンが見つかりました。

NSS Signtool で動作するように HSM で保護されたキーを取得できた人はいますか? または、NSS Signtool を Java キーストアと統合するメカニズムはありますか? (Javaオプションのアイデアは、HSMで動作するように上記のソリューションを操作できるということです)

ありがとう!

4

1 に答える 1

1

nss-3.13.6 ビルドからコンパイルされた nsscapi.dll を使用して、ソリューションをまとめることができました。次に、アプリケーション全体で使用するために、追加のライブラリ依存関係を nss-3.20 ビルドにコピーしました。

コードの一部に署名するための nsscapi.dll は、NSS の基本的な PKCS11 から Capi モジュールへのインターフェイスです。どうやらメモリ リークの問題があるようですが、私の NSS の使用範囲は単に XPI ファイルに時々署名することなので、そのモジュールを時々再起動しても問題ありません。

解決策には、mozilla-build を使用してビルドされた nss-3.20 と、このパッケージの「nss」サブフォルダー内から「make nss_build_all」が含まれます。

Visual Studio C++ Redistributable 2015 x86 バージョン (このプロジェクトでは 64 ビットが機能しないため、32 ビット)。

Windows への Thales CAPI インターフェイス (はい、直接 PKCS11 モジュールがありますが、カスタマイズされた環境では CAPI と Java キーストアのみがオプションであるため、Thales PKCS11 モジュールは使用しませんでした)

PATH 環境変数は、NSS ビルド内の bin および lib フォルダーを指すように変更されました。

nss-3.20\dist\WIN95xxx\lib\ フォルダにある nsscapi.dll は、「modutil」を使用して NSS ビルドにロードされました。

modutil -dbdir "c:\apps\certs" -add "capi" -libfile "C:\Apps\nss-3.20\dist\WIN954.0_DBG.OBJ\lib\nsscapi.dll" -mechanisms RSA:DSA:RC2:RANDOM

コード署名証明書を CAPI に入力するように Thales を既に構成していたので、CAPI にコード署名証明書が既にありました。

現在のユーザーの「個人用」証明書ストアを表示するには、mmc.exe で「証明書」スナップインを使用する必要がありました。次に、使用したいコード署名証明書の「わかりやすい」名前を「test」などの意味のある名前に変更します。これは、NSSCAPI モジュールが、可視性を持つリスト内でその証明書を一意に識別できるようにするためです。

テスト コード署名証明書の 1 つのフレンドリ名を変更するステップの後、NSS サインツールを使用して、使用可能な証明書のリストを表示しました。

signtool -d "c:\apps\certs" -L

「test.xpi」ファイルを「c:\apps\certs」の「test」サブフォルダーに解凍しました。これは、作成したばかりのサブフォルダー名です。必要なものを使用できます。

私のリストにはエントリが含まれていました:

  • Microsoft 証明書ストア:テスト

* は、NSS でのコード署名に使用できる有効な証明書であることを示します

次に、signtool を使用して、テスト XPI ファイルのコードに署名しました。

signtool -d "C:\Users\mlawson\AppData\Roaming\Mozilla\Firefox\Profiles\4jnnnb1y.default" -k "Microsoft Certificate Store":"test" test/

成功して!

この回答の書式設定がオフになっている場合は、事前にお詫び申し上げます。スタック オーバーフローへの投稿と、投稿への回答の両方を行ったのはこれが初めてです (自分自身の投稿であっても)。NSS の構築などのより大きな「方法」のいくつかは Mozilla のサイトで既に文書化されているため、この投稿では簡潔にするために高レベルの手順のいくつかをざっと説明しました。Thales に関連する構成は Thales によって文書化されていますが、CAPI インターフェイスの私のユースケースはカスタムで独自のものであるため、構成方法の説明には関係ありません。しかし、nsscapi.dll とこのソリューションを使用するという全体的な概念は、MSCAPI に結びつくものすべてに実際に適用され、NSS でそれを使用できることは便利です。nsscapi.dll は、firefox の「セキュリティ デバイス」にモジュールとしてロードすることもできるため、firefox は CAPI も使用できますが、正確にはわかりません...

于 2015-10-08T20:37:22.600 に答える