私はJava以前は自己署名されていたアプレットに取り組んでいます。Java 7u51が使用されているので、私はjarを取得するように取り組んでいますアプレットが署名した。
Jarの署名には、Apache2 sslに使用されている証明書/キーを使用しました。これを行うには、キー/証明書と Not Commons SSL ライブラリを使用して新しいキーストアを作成する必要がありました。
アプレットjarに対してjarsigner -verifyを実行すると、次のようになります。
This jar contains entries whose signer certificate's ExtendedKeyUsage extension
doesn't allow code signing.
アプレットはまだ無効な証明書エラーを受け取っています。証明書を表示できますが、SSLで使用される証明書と同じです。エラーメッセージには、自己署名されたためにブロックされたと記載されていますが、これは自己署名証明書ではありません。
セキュリティ設定を「中」に下げるとアプレットを実行できますが、これはこのプロジェクトでは受け入れられません。
これに署名するために使用した証明書は、チェーンの一部です(約4桁)。チェーン全体を使用して瓶に署名する必要がある方法はありますか?コード署名証明書を使用する必要がありますか?
jarsigner -verify
は、問題があることを示し、同じ理由で、同じコードベースを使用しているため、JVMが同じ理由でアプレットを拒否する可能性があります。
Extended Key Usage
は 標準の証明書拡張 であり、証明書が許可される「使用法」の完全なリストを示します。この場合、jarsigner
(およびおそらく、JVM)は、特定のOIDで「コード署名」と示されている)拡張を含む証明書に厳格であるように見えます。関連する拡張機能を書き込むかどうかはCAに依存します。SSLサーバーの証明書には、デフォルトでそのような拡張機能は含まれません(「拡張キーの使用法」がある場合、これにはOIDが含まれます「コード署名」ではなく、「サーバー認証」などに使用します)。
特定のコード署名証明書を取得する必要があります。すべてのCAがこの種のものを販売しているわけではありません。