12

Sun の PKCS11 JCE セキュリティ プロバイダには、必要な機能がいくつか欠けています。
そこで、元のソースを使用して拡張バージョンを作成しました。

残念ながら、JCE インフラストラクチャは、 適切に署名されていないため
、「JCE がプロバイダーを認証できません」という新しいプロバイダーを拒否します。

javax.crypto.JceSecurity.verifyProviderJar(...)投げます。
(それは を呼び出しますjavax.crypto.JarVerifier.verify())

新しいプロバイダーに署名して JCE で動作させる方法について何か提案はありますか?

4

5 に答える 5

9

このプロセスについては、ドキュメント「プロバイダの実装方法」で説明されています。

これには、 Sun Oracle にいくつかの情報 (署名キー用に生成した CSR を含む)を電子メールで送信し、確認文書をファックスで送信することが含まれます。署名済み証明書を取得するには 1 週間以上かかる場合があるため、事前に計画してください。

プロバイダーが一部の (抑圧的な) 政府によって制限されているサービスを提供している場合にのみ、プロバイダーに署名する必要があります。たとえば、Cipher実装は制限された「サービス」ですが、制限されMessageDigestていないサービスです。あなたが受け取っているメッセージから、制限されたサービスを提供しようとしていると思います。

これらのサービスのいずれかを提供する場合、それを回避する方法はありません。Sun が発行したコード署名証明書が必要です。(IBM の 1 つも機能する可能性があります。私の記憶が正しければ、IBM のコード署名 CA はサポートされていますが、発行プロセスについては何も知りません。)

于 2009-11-18T16:19:42.063 に答える
4

別の方法は、OpenJDK を使用してカスタム プロバイダーを設計することです。これは、Sun/Oracle が後援するオープンソース プロジェクトであり、公式リリースのコード ベースを提供します。OpenJDK では、プロバイダーに署名する必要はありません。OpenJDK は、いくつかの Linux ディストリビューションで (デフォルトで、現在) 利用できます。残念ながら、Windows や Macintosh ではすぐには利用できないようです。Windows または Macintosh を実行している場合は、VM に Linux をインストールすることをお勧めします。

ただし、Windows または Mac で開発する必要がある場合は、公式インストールの jce.jar (Java lib ディレクトリ内) に OpenJDK インストールから jce.jar ファイルをコピーできます。これにより、Jar 認証プロセスが効果的に回避されます。ただし、開発が完了したら、必ず元の jce.jar ファイルを元に戻してください。

于 2011-03-31T15:14:20.933 に答える
1

「JCE Code Signing CA」で JAR に署名する必要があります。現在のすべての Java ディストリビューションでは、2 つの CA (Sun と IBM) のみが組み込まれており (ハードコードされています)、独自の CA を追加する方法はありません。Sun と協力してプロバイダに署名しようとしましたが、ほとんど不可能です。彼らは中間 CA 証明書を発行しません。つまり、変更を加えるたびにトラブルを経験する必要があります。

独自のライブラリを使用してみませんか? 異なる JCE 間の相互運用性のために標準 API を使用します。しかし、CryptoKi/SmartCard の場合、現時点では現実的ではありません。ほとんどの場合、ベンダー固有の API と対話するためにカスタム コードを記述する必要があります。コードの変更を最小限に抑えるために、コードを JCE API に模倣させることもできます。

于 2009-11-18T17:07:13.933 に答える