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