この問題に立ち向かうのは私だけだとは信じられません。私は何時間もグーグルで検索してきましたが、運がありませんでした。Java セキュリティのドキュメントは、PKCS12 証明書を完全に扱っているようには見えません。
ユーザー固有の PKCS12 証明書用に Java をセットアップしようとしています。特に、これは、Eclipse で、証明書を介して認証された Trac サーバーにアクセスできるようにするために使用されます。Eclipse 用の Trac Mylyn 統合プラグインを使用しています。
セットアップは次のとおりです。
- ユーザーのホーム ディレクトリは /home にあります
- /central でのマルチユーザー マウント
- 各ユーザーは、~/user.p12 に個人証明書を持っています。
- 個人証明書のパスワード: pass1234
- ユーザーのパスワードは ~/password.txt の 0400 ファイルに保存されます
- ca の読み取り専用トラスト ストアは、/central/ca.jks にあります。
- トラストストアのパスワードがありません
- /central/jdk_1.6.0 にインストールされた JDK 1.6
- /central/eclipse_3.4.0 にインストールされた Eclipse 3.4
- JAVA_HOME=/central/jdk_1.6.0
- Eclipse がこれを必要とするため、JAVA_HOME は JDK の場所に設定されます。
- ECLIPSE_HOME=/central/eclipse_3.4.0
- JRE は $JAVA_HOME/jre にあります
- 各ユーザーには ~/.java.policy ファイルがあります
- https://trac.internal/tracで実行されている 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セットアップです。
何か案は?