我不敢相信我是唯一遇到这个问题的人。我已经用谷歌搜索了几个小时,但没有任何运气。Java 安全文档似乎没有彻底解决 PKCS12 证书。

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

这是设置:

  • 用户主目录位于 /home
  • 多用户安装在 /central
  • 每个用户都有一个个人证书:〜/用户.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
  • JAVA_HOME 设置为 JDK 位置,因为 Eclipse 需要这个
  • 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"

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

  • 每个用户都必须安装自己的 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,而不是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 设置。

有任何想法吗?

有帮助吗?

解决方案

用一个 用户特定配置.

设置私有配置区域位置

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

user-home-dir/.eclipse/<产品 ID>_<产品版本>/configuration

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

其他提示

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

System.setProperty(...);

让我知道什么时候可以解决您的问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top