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

问题描述

使用特定用户的配置

设置专用配置区域位置

专用配置区域的默认位置是:

用户主目录/.eclipse/ <产品ID> _ <产品版本> /配置

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

解决方法

我不敢相信我是唯一一个可以解决这个问题的人。我已经搜寻了几个小时,还没有碰到任何运气。Java安全文档似乎并未彻底解决PKCS12证书。

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

这是设置:

  • 用户主目录位于/ home
  • 多用户安装在/ central
  • 每个用户在以下位置都有个人证书:〜/ user.p12
  • 个人证书的密码是:pass1234
  • 用户密码存储在〜/ password.txt中的0400文件中
  • ca的只读信任存储位于:/central/ca.jks
  • 信任库没有密码
  • 在/central/jdk_1.6.0中安装了JDK 1.6
  • Eclipse 3.4安装在/central/eclipse_3.4.0
  • JAVA_HOME = / central / jdk_1.6.0
  • JAVA_HOME设置为JDK位置,因为Eclipse需要此位置
  • ECLIPSE_HOME = / central / eclipse_3.4.0
  • JRE住在$ JAVA_HOME / jre
  • 每个用户都有一个〜/ .java.policy文件
  • 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"

好的,可以,但是有两个问题:

  • 每个用户都必须具有自己的密码安装。(或者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,而不是JDK的嵌套JRE吗?

我已经看到了引用以下属性的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设置。

有任何想法吗?

猜你在找的技术问答相关文章

如何检查配对的蓝牙设备是打印机还是扫描仪(Android)
是否允许实体正文进行HTTP DELETE请求?
如何将ZipInputStream转换为InputStream?
java.util.logging Java 8中的变量
PowerMockito.doReturn返回null
Java中的RESTful调用
Swing / Java:如何正确使用getText和setText字符串
特殊字符和重音字符
Android Studio中的ndk.dir错误
错误“找不到主类”