Как сохранить хранилище ключей CAcerts на Mac при обновлениях?

В Mac OS X хранилище ключей CA находится в /System/Library/Frameworks/JavaVM.framework/Home/lib/security/cacerts. Кажется, что это хранилище ключей перезаписывается при каждом обновлении Java, что очень раздражает, поскольку у нас есть внутренние центры сертификации для сред разработки, тестирования…

Есть ли способ сохранить изменения в хранилище ключей в JSR Apple, а теперь и в Snow Leo JSR3 в обновлениях для отдельных пакетов разработчика Java (чьи JDK используют одно и то же хранилище ключей)?


person Bernd Haug    schedule 13.12.2010    source источник


Ответы (3)


[Это устаревшая информация - см. Ответ ниже для 10.6+]

/System/Library/Frameworks/JavaVM.framework/Home/ - это символическая ссылка на Versions/CurrentJDK/Home в JavaVM.framework. Очевидно, это изменится с новой версией. Используйте полный путь (например, /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home), и он не изменится при обновлении.

person Barry Wark    schedule 13.12.2010

Следующие параметры могут использоваться для указания местоположения файла cacerts в java:

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

Сделайте копию cacerts в домашнем каталоге java (с внутренними центрами сертификации) и поместите его где-нибудь в свой домашний каталог. Затем укажите полный путь к расположению файла cacerts в качестве значения свойства javax.net.ssl.trustStore выше. Эта копия не будет перезаписана обновлениями Java. Пароль по умолчанию - changeit.

У этого подхода есть два недостатка:

  • Ваш файл не получит никаких обновлений для файла cacerts в sdk. Это в первую очередь проблема, если центр сертификации скомпрометирован.
  • Везде, где вам нужны настраиваемые cacerts (инструменты сборки, сервер приложений и т. Д.), Эти параметры необходимо указывать.
person kldavis4    schedule 03.05.2012
comment
Интересно ... но другая проблема заключается в том, что пароль хранилища ключей будет отображаться для любого пользователя, который может перечислить процессы на этой машине. - person Bernd Haug; 30.05.2012
comment
Вы имеете в виду пароль доверенного хранилища, верно? Это проблема, но ее можно смягчить, сделав что-то похожее на то, что я предлагаю здесь для прохода хранилища ключей: stackoverflow.com/a/10645013 / 290918 - person kldavis4; 30.05.2012
comment
Есть еще один большой недостаток отсутствия обновлений cacerts. Новые сертификаты ЦС добавляются постоянно, поэтому, если вы не обновите файл cacerts, вы не сможете разговаривать с серверами с сертификатами, подписанными этими новыми сертификатами ЦС. - person Dan Pritts; 27.08.2018

Похоже, что в 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, которая не изменится при обновлениях, если нам повезет.

person Hans-Christoph Steiner    schedule 02.02.2013