Я импортировал внутренние Центры сертификации в CA Java keystore. (Используя keytool для импорта в хранилище "cacerts") Это хорошо работает и денди, пока я не обновляю об/мин Java. В которой точке все те импортированные сертификаты не перенесены на новую установку. Таким образом, приложения взрывают при попытке установить связи SSL.
Там какой-либо путь состоит в том, чтобы заставить эти сертификаты сохраниться посредством обновлений Java? Или простой способ повторно выполнить команды импорта на триггере обновления? Я могу, очевидно, написать сценарий этих команд в свой процесс обновления, но я надеюсь, что существует более изящное решение.
Для ссылки это - эквивалентный RHEL 5.10 (технически Oracle Linux). Я использую java-1.7.0-openjdk через официальные репозитории, и просто обновленный до U65.
Может быть полезно хранить хранилище ключей / хранилище доверенных ключей для конкретного сайта или хоста вне каталога установки java и вместо этого указывать на него, когда вам нужно использовать доверие. Предполагая, что ваше хранилище доверенных сертификатов находится по адресу /opt/site/cacerts.JKS , вы можете сделать это одним из двух способов:
Добавьте в свой код Java строку вроде:
System.setProperty ("javax.net.ssl.trustStore", "/ opt / site / cacerts.JKS");
Во время выполнения добавьте определение в сценарий запуска:
java -D'javax.net.ssl.trustStore '= "/ opt / site / cacerts.JKS" /opt/site/myClass.class
Как я делаю (может быть, не лучший?): Сохранять cacerts перед обновлением и восстанавливать после, я написал это в своем скрипте обновления следующим образом:
1) save:
javaexe=`readlink -f /usr/bin/java`
jredir=`dirname $javaexe`
cacertsfile=${jredir}/../lib/security/cacerts
[ -f $cacertsfile ] && cp -p $cacertsfile /tmp/cacerts
2) установить обновления (yum update или другой способ).
3) восстановление:
[ -f /tmp/cacerts ] && cp -p /tmp/cacerts $cacertsfile