18

Java Web Start を通じて配布されるオープン ソース プログラム WPCleaner を開発しました。現在のバージョンは、http://site4145.mutu.sivit.org/WikiCleaner/WikiCleaner.jnlpで入手できます。

最近の Java の更新により、Java Web Start を使用して Java アプリケーションをデプロイすることがますます難しくなっています。アプリケーションにいくつかのアクセス許可 (設定の書き込み、他の Web サイトへのアクセスなど) が必要な場合です。

私のアプリケーションは自己署名されていました。これは以前は問題ありませんでしたが、新しい更新では、必要に応じて一度だけではなく、実行するたびにアプリケーションを受け入れる必要があります。そこで、信頼できる証明書を使用してアプリケーションに署名することにしました。

次の議論に続いて、Certum から 1 つを入手しました (どうやら、オープンソース開発者は無料です):オープンソース プロジェクトのコード署名証明書?

この証明書で署名された新しい jar ファイルを生成しました (jar ファイルはhttp://site4145.mutu.sivit.org/WikiCleaner/WikipediaCleanerTest.jarで入手できます) が、まだ問題があります: JWS からアプリケーションを起動するとき、Javaはまだアプリケーションを完全に信頼できないという警告ウィンドウを表示します。Editor は UNKNOWN と表示されたままですが、メッセージの詳細を確認すると、使用されているのは Centrum からの新しい証明書です。

私が間違っていることについて誰かが考えを持っていますか? 信頼できる CA (Centrum は Java cacerts にあるようです) からの証明書を取得すると、ユーザーは証明書を一度だけ受け入れることができると思いました。

ありがとう

PS: を実行するjarsigner -verifyと、「この jar には証明書チェーンが検証されていないエントリが含まれています」という警告が表示されます。

4

6 に答える 6

10

[2017 年更新] Certum のオープン ソース コード署名は、秘密鍵として暗号化フラッシュ カードを使用するようになり、証明書の有効化とインストール、およびコード署名のためにプラグインする必要があります。キーは 125 ドル (+ 送料) で、1 年間の証明書だけで 40 ドルです。割引を求めることができます。


jar ファイルに最初から署名する手順は次のとおりです。

指示

英語の説明書は見つけにくく、最新のものではありません。次の手順は、次の 2 つのドキュメントに基づいています。

証明書を作成、アクティブ化、およびインストールします。

  1. 「Certum Certification」Web サイトの「OpenSource Code Signing」セクションにアクセスして、証明書を注文してください。
  2. 暗号化フラッシュ カードを受け取ったら (私の場合は 15 日かかりました)、プラグを差し込んで、カードからドライバーとproCertum CardManagerソフトウェアをインストールします。
  3. Certum アカウントに移動し、新しく注文した証明書の有効化プロセスに従います。

ヒント: CryptoAgent Java Web Start アプリケーションは、JDK (JRE ではない) < 9 (つまり、JDK 7 または 8) でのみ実行されます。

  1. 公的書類(ID カード、家賃の請求書など)の提出を求めるメールと、確認手続きのメールが届きます。
  2. アクティベーションに必要な書類と情報を送信します。証明書のインストールを求める別のメールが届きます (検証は 1 時間以内に完了しました)。
  3. カードへの証明書の保存の手順に従って、暗号化カードに証明書をインストールします(英語の手順、パート 4 を参照)。

ファイル「bundle.pem」を取得します

このファイルは、アプリケーションに署名するときに有効な証明書チェーンを取得するために必須です (ポーランド語の手順のパート 7.1.2 を参照してください)。

基本的には、1) 証明書と 2) Certum Code Signing CA SHA2公開鍵をプレーン テキスト形式のファイルに連結することで構成されます。

  1. proCertum CardManagerを開く>>カードを読む>>共通タブ>> 証明書を選択し、[詳細を表示] をクリックします。
  2. 証明書をエクスポートします: x509 - base-64
  3. Certum Code Signing CA SHA2を PEM 形式でダウンロードします (Certumのルート証明書のリストから)。
  4. これら 2 つの証明書を連結して、テキスト ファイル「bundle.pem」を作成します (最初に自分の証明書、2 番目に Certum 証明書)。

Jarsigner で jar ファイルに署名する

  1. 英語の手順のポイント 7.2 で説明されているように、「provider.cfg」ファイルを作成します。
  2. jar に署名するには、(所有者名ではなく) 証明書のエイリアスが必要です。それを取得するには、次のコマンドを実行します。
keytool -list -v -keystore NONE -storetype PKCS11 -providerClass sun.security.pkcs11.SunPKCS11 -providerArg "provider.cfg" -storepass "[your_pin]"
  1. aliasprovider.cfgおよびbundle.pemファイルの準備ができたら、次のコマンドで jar に署名するだけです。
jarsigner -keystore NONE -certchain "bundle.pem" -tsa "http://time.certum.pl" -storetype PKCS11 -providerClass sun.security.pkcs11.SunPKCS11 -providerArg "provider.cfg" -storepass "[your_pin]" "[your_code].jar" "[your_alias]"

個人的には、Ant スクリプトを使用してアプリケーションの jar ファイルに署名しています。ANT プロジェクトのsignjar タスクを参照してください。

于 2013-10-28T10:24:53.453 に答える
0

hereで説明したように、UNKNOWN PUBLISHER 警告を削除するには、jar の署名に使用した証明書を Java コントロール パネルの署名者 Jar に追加します: Java の構成 -> セキュリティ -> 証明書の管理 -> 署名者 Jar オプション -> インポート。

于 2015-07-25T14:28:17.523 に答える
0

私は今日、これで同じ問題を解決しました:

Manifest-Version: 1.0
Trusted-Library: true
Application-Library-Allowable-Codebase: *
Trusted-Only: false
Application-Name: My app
Permissions: all-permissions
Created-By: 1.6.0_16 (Sun Microsystems Inc.)
Caller-Allowable-Codebase: *
Codebase: *
于 2013-10-18T20:44:26.750 に答える