Mac OS X在/System/Library/Frameworks/JavaVM.framework/Home/lib/security/cacerts中有CA密钥库。这个密钥库似乎被每个Java更新覆盖,这非常烦人,因为我们有用于开发环境的内部CA,测试......
有没有办法在Apple JSR中保留密钥库更改,现在,使用Snow Leo JSR3,还可以跨越单独的Java开发人员包(其JDK使用相同的密钥库)的更新?
答案 0 :(得分:5)
[这是过时的信息 - 请参阅下面的答案10.6+]
/System/Library/Frameworks/JavaVM.framework/Home/
是JavaVM.framework中Versions/CurrentJDK/Home
的符号链接。显然,这将随着新版本而改变。使用完整路径(例如/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home
),它不会在更新中发生变化。
答案 1 :(得分:4)
以下参数可用于指定cacerts文件到java的位置:
-Djavax.net.ssl.trustStore=<cacerts.location>
-Djavax.net.ssl.trustStorePassword=changeit
在java主目录(带有内部CA)中复制cacerts并将其放在主目录中的某个位置。然后将完整路径放到cacerts文件位置作为上面javax.net.ssl.trustStore属性的值。该副本不会被Java更新覆盖。默认密码为'changeit'。
这种方法的两个缺点是:
答案 2 :(得分:3)
在Mac OS X 10.6.8 Snow Leopard中似乎发生了变化。现在/System/Library/Frameworks/JavaVM.framework/Home/lib/security/cacerts
是/System/Library/Java/Support/CoreDeploy.bundle/Contents/Home/lib/security/cacerts
的符号链接,如果我们很幸运,它们不会在更新时更改。