我无法相信我是唯一一个遇到这个问题的人.我一直在谷歌搜索几个小时,没有运气.Java安全文档似乎没有彻底解决PKCS12证书.
我正在尝试为用户特定的PKCS12证书设置Java.除此之外,还将使用它,以便在Eclipse中,我可以访问通过证书进行身份验证的Trac服务器.我正在使用Trac Mylyn集成插件进行eclipse.
这是设置:
用户主目录位于/ home
多用户安装在/中央
每个用户都有一个个人证书:〜/ 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设置.
有任何想法吗?
使用特定于用户的配置.
设置专用配置区域位置
私有配置区域的默认位置是:
用户家-DIR/.eclipse/
_ <产品版本> /配置 用户主目录由user.home Java系统属性确定.产品ID和版本是从Eclipse安装下的产品标记文件.eclipseproduct获得的.