我不敢相信我是唯一遇到这个问题的人。我已经在谷歌上搜索了几个小时,但没有任何运气。Java 安全文档似乎没有彻底解决 PKCS12 证书。
我正在尝试为用户特定的 PKCS12 证书设置 Java。除其他外,这将被使用,以便在 Eclipse 中,我可以访问通过证书进行身份验证的 Trac 服务器。我正在为 Eclipse 使用 Trac Mylyn 集成插件。
这是设置:
- 用户主目录位于 /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=/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 服务器
- 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 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 设置。
有任何想法吗?