Eclipse のユーザー固有の証明書を使用するように Java をセットアップするにはどうすればよいですか?
質問
この問題に直面しているのが私だけだなんて信じられません。何時間もグーグル検索しましたが、うまくいきませんでした。Java セキュリティのドキュメントでは、PKCS12 証明書について十分に説明されていないようです。
ユーザー固有の PKCS12 証明書用に Java をセットアップしようとしています。これは、特に、Eclipse で証明書によって認証された Trac サーバーにアクセスできるようにするために使用されます。私は Eclipse 用の Trac Mylyn 統合プラグインを使用しています。
セットアップは次のとおりです。
- ユーザーのホーム ディレクトリは /home にあります
- /central でのマルチユーザー マウント
- 各ユーザーは次の場所に個人証明書を持っています。~/user.p12
- 個人証明書のパスワードは次のとおりです。パス1234
- ユーザーのパスワードは、~/password.txt の 0400 ファイルに保存されます。
- CA の読み取り専用トラスト ストアは次の場所にあります。/central/ca.jks
- トラストストアのパスワードがありません
- JDK 1.6 は /central/jdk_1.6.0 にインストールされています
- Eclipse 3.4 は /central/eclipse_3.4.0 にインストールされています
- JAVA_HOME=/central/jdk_1.6.0
- Eclipse にはこれが必要であるため、JAVA_HOME は JDK の場所に設定されます。
- ECLIPSE_HOME=/central/eclipse_3.4.0
- JRE は $JAVA_HOME/jre にあります
- 各ユーザーは ~/.java.policy ファイルを持っています
- で実行されている Trac サーバーがあります https://trac.internal/trac
- Trac サーバーは証明書を使用して認証します
ここで、各ユーザーが自分が所有するファイル (たとえば、~/.java.policy ファイルなど) を変更するだけで、中央の Eclipse アプリケーションを起動して Trac リポジトリにアクセスできるようにしたいと考えています。十分にシンプルに思えます。
現時点では、これを機能させる唯一の方法は、$ECLIPSE_HOME/eclipse.ini ファイルを編集して追加することです。
-Djavax.net.ssl.keyStore="/home/user/user.p12"
-Djavax.net.ssl.keyStoreType="PKCS12"
-Djavax.net.ssl.keyStorePassword="pass1234"
-Djavax.net.ssl.trustStore="/central/ca.jks"
それはうまくいきましたが、これには 2 つの問題があります。
- 各ユーザーは独自の Ecipse をインストールする必要があります。(またはEclipseはユーザーファイルからそれを読み取ることができますか?)
- これは Eclipse 固有のものですが、最終的にはこれを Java 構成として使用したいと考えています。
また、少し前のことですが、$JAVA_HOME/jre/lib/security/java.security ファイルを編集して追加できることを覚えています。
keystore=/home/user/user.p12
keystore.type=PKCS12
keystore.password=pass1234
truststore=/central/ca.jks
しかし、Eclipse はそれを認識していないようです。私の JAVA_HOME が、JDK のネストされた JRE ではなく、JDK を指しているためでしょうか?
私は見たことがあります Java PKCS#11 リファレンス これは次のプロパティを参照します。keystoreurl = "none" keystoreType = "pkcs11" keystorepasswordurl = some_pin_url
私が見た別の参考文献には、~/.java.policy ファイルを編集して以下を含めることができると書かれていました。
keyStore "file:///home/user/user.p12", "PKCS12", "SunJSSE";
keyStorePasswordUrl "file:///home/user/password.txt";
しかし、それも拾われません。もしかしたら、実際には動作しているのに、java.security ファイルが動作しないのと同じ理由で読み込まれないのか、あるいはまったく動作しないのかもしれません。
私が見たいくつかのシステムプロパティ:
javax.net.ssl.keyStore="/home/user/user.p12"
javax.net.ssl.keyStoreType="PKCS12"
javax.net.ssl.keyStorePassword="password"
javax.net.ssl.keyStoreProvider="SunJSSE"
javax.net.ssl.trustStore="/home/user/ca.jks"
javax.net.ssl.trustStoreType="JKS"
javax.net.ssl.trustStorePassword=""
javax.net.ssl.trustStoreProvider="Sun"
したがって、現時点では、各ユーザーに独自の Eclipse をインストールさせることにこだわっているようです。複雑なセットアップのように聞こえるかもしれませんが、証明書のセットアップに関する限り、これは Eclipse とは何の関係もないはずです...これは実際には、ユーザー固有の証明書のための Java セットアップです。
何か案は?
解決
使う ユーザー固有の構成.
プライベート構成領域の場所の設定
プライベート構成領域のデフォルトの場所は次のとおりです。
ユーザーホームディレクトリ/.eclipse/<製品ID>_<製品バージョン>/configuration
ユーザーのホーム ディレクトリは、user.home Java システム プロパティによって決定されます。製品 ID とバージョンは、Eclipse インストール下の製品マーカー ファイル .eclipseproduct から取得されます。
他のヒント
あなたがファイルにすべてのそれらの情報を保存し、それから読んで使用して、コード内の各変数を設定することができます:
System.setProperty(...);
それはあなたの問題を解決したときに、私に教えてくださいます。