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

Mac OS X имеет хранилище ключей CA в / System/Library/Framework / JavaVM.framework/Главная/lib/безопасность / cacerts. Это хранилище ключей, похоже, перезаписывается каждым обновлением Java, что очень раздражает, поскольку у нас есть внутренний CAs для сред разработки, тестирования...

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

3 ответов


[ это устаревшая информация - см. ответ ниже для 10,6+ ]

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


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

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

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

двумя недостатками этого подхода являются:

  • ваш файл не получит никаких обновлений для файла cacerts в sdk. Это в первую очередь проблема, если сертификат скомпрометирован.
  • везде, где вам нужны пользовательские cacerts (инструменты сборки, сервер приложений и т. д.), Эти параметры должны быть указаны.

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