web-dev-qa-db-ja.com

インポートJava信頼できる証明書をJREにインポート

Javaアプリから多くの人に証明書をインストールする必要があります。ワンクリックプログラムまたはバッチファイルを使用して、信頼できる証明書としてインポートしたい([コントロールパネル]-> [セキュリティ]) ->証明書)。その後、アプリケーションを初めて使用するときに常に許可を押す必要はありません。

必要な証明書を.csr.cerの両方として抽出しました(コントロールパネルを介して.csr、キーツールを介して.cer)。今、私はメニューをクリックせずにそれらの1つを取り戻す必要があります。

Keytoolを使用して.cerをインポートする際のドキュメントがよくわからないので、例を挙げてください。または、keytoolを使用するよりも簡単な方法はありますか?

6
Zalastax

「keytool」を使用してこれを行う方法のいくつかの例

ここの2番目のリンクには、バッチファイルの例があります。

@echo off
echo
echo This will import an X.509 SSL certificate into the keystore for the JVM
specified
echo
echo Press Control+C to abort.
pause
SETLOCAL

rem -------------------------------------------------
rem 1) Set the path to you JVM here
rem -------------------------------------------------
set Java_HOME=C:\j2sdk1.4.2_05

rem -------------------------------------------------
rem 2) SET THE CERTIFICATE NAME AND ALIAS HERE
rem -------------------------------------------------
set CERT_NAME=mycert.cer
set CERT_ALIAS=mycert

rem -------------------------------------------------
rem 3) SET THE KEYTOOL PASSWORD HERE
rem -------------------------------------------------
set KEYTOOL_PASS=changeit

rem -------------------------------------------------
rem DO NOT EDIT BELOW THIS LINE
rem -------------------------------------------------
set Java_SECURITY=%Java_HOME%\jre\lib\security
set CERT=%Java_SECURITY%\%CERT_NAME%
%Java_HOME%\jre\bin\keytool -import -trustcacerts -keystore %Java_SECURITY%\cacerts
-storepass %KEYTOOL_PASS% -noprompt -alias %CERT_ALIAS% -file %CERT%
ENDLOCAL
pause

どの部分が理解に苦労していますか?意味をなさない特定のセクションはありますか?バッチファイルについてサポートが必要ですか?具体的には、どこで行き詰まっていますか?おそらく私はもっと具体的に助けることができます。

2
jefflunt

C:\Windows\Sun\Java\Deploymentdeployment.configというファイルを作成します。

このファイルの内容は次のとおりです。

deployment.system.config=file:///C:/Windows/Sun/Java/Deployment/deployment.properties
deployment.system.config.mandatory=false

同じ場所にdeployment.propertiesという名前の別のファイルを作成し、この行をdeployment.propertiesに含めます。

deployment.system.security.trusted.certs=C\:\\Windows\\Sun\\Java\\Deployment\\trusted.certs

trusted.certsを、必要なすべての証明書を含むユーザープロファイルからc:\windows\Sun\Java\deploymentsにもコピーします。

ファイルに含まれるすべての証明書は、システム/信頼できる証明書の下のJavaコントロールパネルに表示されます。

次のようなdeployment.propertiesファイルに含めることで、他のほとんどのJavaプロパティでこれを行うこともできます。

deployment.javaws.autodownload=NEVER
deployment.javaws.autodownload.locked
deployment.security.level=MEDIUM
deployment.security.level.locked
deployment.security.mixcode=HIDE_RUN
deployment.security.mixcode.locked
deployment.insecure.jres=NEVER
deployment.insecure.jres.locked
deployment.expiration.check.enabled=false
deployment.expiration.check.enabled.locked
deployment.webjava.enabled=true
deployment.webjava.enabled.locked

1行目はプロパティを設定し、2行目(最後に.lockedを使用)は、ユーザーがJavaコントロールパネルでプロパティを変更できないようにします

また、exception.sitesという同じ場所にファイルを作成し、このファイルにWebアドレスを追加して(1行に1サイト)、この行をdeployment.propertiesに含めることで、サイト例外リストを管理することもできます。

deployment.user.security.exception.sites=C\:\\Windows\\Sun\\Java\\Deployment\\exception.sites

このリンクでは、構成可能なプロパティのほとんどについて説明します。

http://docs.Oracle.com/javase/7/docs/technotes/guides/jweb/jcp/properties.html

0
Nick Stoll

署名されたアプレットでの証明書の受け入れポップアップを回避しようとして、ここでも同様の問題がありました。修正が見つかりました。きれいではありませんが、これまでのところうまくいったようです。すべてのユーザーは、特定のマシンのアプレットに初めてアクセスしたときに生成されるtrusted.certsキーストア(OSによっては<username>/AppData...Sun/Java/Deployment/trusted.certsの下のどこかにあります)を持っています。起動スクリプトを使用して、ユーザーごとにこのファイルを中央のどこかから置き換えることができます。新しいtrusted.certsファイルを作成するには、必要な単一マシンの証明書を受け入れ、trusted.certsキーストア全体を新しいマシンにコピーします。

JREの中央の証明書キーストアへのロードは機能しなかったため、この別の方法を使用しました。それは醜いです、そしてあなたがそのキーストアへのパスワードを持っていれば、上記のようにバッチスクリプトを介してそれを設定することもできますが、それは私たちがしたことです。

このアプローチは、ユーザーごとに機能し、ログオンに関連付けられているため、一元管理と一括更新が可能であるため、私たちにとって最も理にかなっています。

0
Scott Taylor

Java keytoolと署名付きアプリの一連の信頼の概念は、ユーザーが肯定的なアクションを実行して信頼を確認することを期待します。この場合、ユーザーはコード発行元に関連する公開鍵を自分のユーザーにインポートします。 Javaキーストアとそれに関連するパスワードが必要です。 http://Java.Sun.com/developer/onlineTraining/Programming/JDCBook/signed.html)を参照してください。 セクションの記述-

6:信頼できる証明書として証明書をインポートする

RayはSSignedApplet.jarとCompanyCer.cerを自分のホームディレクトリにダウンロードします。 Rayは、キーストアデータベース(raystore)を作成し、エイリアスcompanyを使用して証明書をインポートする必要があります。 Rayは、ホームディレクトリのkeytoolを使用してこれを行います。..

これにはかなりの課題があります。したがって、デフォルトの動作では、対処しようとしている[OK]ダイアログで署名済みアプリを実行します。他のユーザーのJavaキーストアへのリモートアクセス/作成は、セキュリティ設計に反します。

0
zedman9991