web-dev-qa-db-ja.com

Java AD Enterprise CAを介した展開ルールセット

私の目標は、Java導入ルールセットを組織に導入することですが、実行中のCAが稼働している場合、コード署名証明書にサードパーティの認証局に支払いたくありませんActive Directory。私はこれを達成するための正しい手順だと思っている手順に従いましたが、最終的に任意のJavaアプレットを実行するときに、次のエラーを受け取ります。

自己署名デプロイメントルールセットjarを検証できません

私が従った手順は次のとおりです。

  1. ルートCA証明書をエクスポートしました
  2. JREインストールパスのcacertsにインポートされたルート証明書
  3. 個人キーストアにインポートされたルート証明書
  4. 個人のキーストアを持つ新しい証明書のためにkeytoolでCSRを生成しました
  5. 「コード署名」テンプレートを使用して、certreqを使用してCSRをエンタープライズCAに送信しました
  6. その証明書を個人キーストアにインポートしました
  7. 非常に基本的な展開ルールセットを作成し、jarにコンパイルしました
  8. 手順6の個人キーストアの証明書でjarに署名しました
  9. 署名されたjarを\ Windows\Sun\Java\Deployment \にコピーしました

上記の手順はすべてエラーなしで完了しました。無効な証明書チェーンなどについては何も起こりません。 JavaコントロールパネルでルートCA証明書を確認できます。コントロールパネルで[Deployment Rule Set]リンクをクリックしてその証明書を表示すると、手順6の証明書とその親が表示されますCAにはどちらも将来の有効期限があり、私が知る限り正しい情報がありますが、アプレットを実行すると、依然として確認エラーが表示されます

だから-これを行うことは単に不可能であり、私たちは証明書の支払いをしなければなりませんか?それとも私は(うまくいけば)何か間違ったことをしていますか?誰かが何か洞察を持っているなら、それは大いに感謝されます、ありがとう!

6
Julius

これは、ChromeとFirefoxの両方でのみ発生しますが、IEでは発生しません。OperaまたはSafariではテストしていません。Chromeの証明書マネージャーはWindowsを起動します。 'もちろん、証明書マネージャーにはエンタープライズCAの証明書が既に含まれており、その証明書をFirefoxの証明書マネージャーに追加しても効果がないようです。ただし、展開ルールセットはIEで完全に機能します。

Chromeを使用しているのは、IEよりも開発ツールに慣れているためです。ユーザーはIEを使用し、WindowsエンタープライズCAを使用しており、 JavaとActiveXが混在している古いレガシーシステムもユーザーの可能性が高いです。IEが動作するので、これを答えとしてマークします私にとっては、私は将来的に他のブラウザのためのいくつかの解決策が見つかることを願っています。

2
Julius

修正が見つかりました。

まったく同じ問題がありました。私は上記のすべてを試しても何もうまくいきませんでした。 ChromeがWindows証明書マネージャを適切に取得していないか、少なくともエンタープライズCAからの署名を検証しているようではありません。ルートCA証明書と下位CA証明書をすべてのシステムキーストアに追加しようとしましたが失敗しました。

問題はChromeが何らかの理由でシステムのキーストアではなく、ユーザーのキーストアを参照しているだけです。RootCA証明書をUSER SIGNER CAに追加した後、それは機能しました。

動作しません:%Java_HOME%\lib\security\cacerts

作品:%USERPROFILE%\AppData\LocalLow\Sun\Java\Deployment\security\trusted.cacerts

GoogleまたはJavaでこの問題を修正する必要があります。

ここで、ユーザーのためにインジェクションをスクリプト化します。

4
Jose

私の問題は、新しいJava=アップデートで、以前の一部のバージョンでのみ使用されていた、私の場合は次の場所にある古いDeploymentRuleSet.jarが削除されないことでした:

C:\Windows\Sun\Java\Deployment\DeploymentRuleSet.jar

このフォルダ内のファイルは、Javaインストールフォルダの場所に依存していません。また、OracleがJavaからSunの名前を削除した後でも、新しいバージョンのJavaでのファイルの場所)、上記のファイルはシステムに残っており、Javaの新しいバージョンで引き続き使用されているようです。

オラクルがJavaアプレットの中間のセキュリティ設定を削除した後、Javaに関連するすべてが機能しなくなり、「ルールセットjarを検証できません」と報告するだけで、インターネットで与えられた解決策は助けました。

Java文字列を検索してJavaに関連するすべてのシステムからクリーンアップし、クリーンインストールを行うために、文字列をスキャンしてこのフォルダーを見つけました。問題Javaの最新バージョンがこのファイルを使い続けた理由

このjarファイルをシステムから削除したため(3台のコンピューターでは、Windows 7でも32ビットと64ビットの両方で同じ問題でした)、Javaは問題なく動作しますが、これは見つかりませんでしたインターネット上のどこでもソリューション。

3
mjanjic

問題は、証明書がJava cacertsファイルにないことです。この問題は、My Oracle Supportドキュメントの「信頼されていない認証局からの証明書を処理する方法(Doc ID 1604086.1)」で説明されています。 、 " Javaコード署名チュートリアル 、またはブログ投稿 既知のコミュニティの自己署名

基本的に、CAの証明書をクライアントマシンのcacertsファイルにインポートする必要があります。 JREをインストールした後、DeploymentRuleSet.jarをコピーする前に、次のようなコマンドを実行してしまいました。

%Java_HOME%\bin\keytool.exe -importcert -keystore %Java_HOME%\lib\security\cacerts -storepass changeit -alias YOURCA -noprompt -file \path\to\root\certificate.cer

適切なインストール領域に対してそのコマンドを発行する必要があります。

  • C:\ Program Files\Java\jre#-ほとんどのユーザーにとって、これはRIAを起動するブラウザーによって使用されます。
  • C:\ Program Files\Java\jdk1。#。0 _#\ jre-ソフトウェアを作成し、開発者ツールを介して実行する開発システム用。
2
Rob

私は同じ問題で多くの苦労し、解決策を見つけました。解決策は、Javaコンソールの証明書タイプ "Signer CA"にある証明書ストアに証明書をインポートすることでした。その後、FirefoxとChromeでも自己署名アプレットを実行できました。

1