如何设置Java以使用Eclipse的用户特定证书?

时间:2009-03-19 20:18:57

标签: java eclipse security trac pkcs#12

我无法相信我是唯一一个遇到这个问题的人。我一直在谷歌搜索几个小时,没有运气。 Java安全文档似乎没有彻底解决PKCS12证书。

我正在尝试为用户特定的PKCS12证书设置Java。除此之外,还将使用它,以便在Eclipse中,我可以访问通过证书进行身份验证的Trac服务器。我正在使用Trac Mylyn集成插件进行eclipse。

以下是设置:

  • 用户主目录位于/ home
  • 多用户安装在/ central
  • 每个用户都有一个个人证书:〜/ user.p12
  • 个人证书的密码是:pass1234
  • 用户密码存储在〜/ 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 = /中央/ jdk_1.6.0
  • JAVA_HOME设置为JDK位置,因为Eclipse需要此
  • ECLIPSE_HOME = /中央/ 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"

好的,这有效,但有两个问题:

  • 每个用户都必须安装自己的ecipse。 (或者可以从用户文件中读取它?)
  • 这是特定于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,而不是JDK的嵌套JRE?

我见过引用以下属性的Java PKCS#11 Reference: 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 intall。我知道这听起来像一个复杂的设置,但就证书设置而言,这应该与Eclipse无关......它实际上是用户特定证书的Java设置。

有什么想法吗?

2 个答案:

答案 0 :(得分:5)

使用user-specific configuration

  

设置私人配置区域位置

     

私有配置区域的默认位置是:

     

用户家-DIR / .eclipse /<产品-ID> _<产品版本> /配置

     

用户主目录由user.home Java系统属性决定。产品ID和版本是从Eclipse安装下的产品标记文件.eclipseproduct获得的。

答案 1 :(得分:0)

您可以将所有这些信息存储到文件中并从中读取,并使用以下代码在代码中设置每个变量:

System.setProperty(...);

让我知道什么时候解决了你的问题。