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