7

Mac OS X 在 /System/Library/Frameworks/JavaVM.framework/Home/lib/security/cacerts 中有 CA 密钥库。这个密钥库似乎会被每次 Java 更新覆盖,这很烦人,因为我们有用于开发环境、测试的内部 CA……</p>

有没有一种方法可以跨 Apple JSR 保留密钥库更改,现在,使用 Snow Leo JSR3,还跨不同 Java 开发人员包(其 JDK 使用相同的密钥库)的更新?

4

3 回答 3

5

[这是过时的信息 - 请参阅下面 10.6+ 的答案]

/System/Library/Frameworks/JavaVM.framework/Home/Versions/CurrentJDK/HomeJavaVM.framework 中的符号链接。显然,这将随着新版本而改变。使用完整路径(例如/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home),它不会随着更新而改变。

于 2010-12-13T12:47:16.703 回答
4

以下参数可用于指定 cacerts 文件到 java 的位置:

-Djavax.net.ssl.trustStore=<cacerts.location>
-Djavax.net.ssl.trustStorePassword=changeit

在 java 主目录(带有内部 CA)中制作 cacerts 的副本,并将其放在主目录中的某个位置。然后将 cacerts 文件位置的完整路径作为上面 javax.net.ssl.trustStore 属性的值。该副本不会被 Java 更新覆盖。默认密码是“changeit”。

这种方法的两个缺点是:

  • 您的文件不会对 sdk 中的 cacerts 文件进行任何更新。如果证书颁发机构受到损害,这主要是一个问题。
  • 在任何需要自定义 cacert(构建工具、应用服务器等)的地方,都需要指定这些参数。
于 2012-05-03T16:48:52.257 回答
3

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,如果我们幸运的话,它不会在更新时改变。

于 2013-02-02T18:37:14.067 回答