Назад | Перейти на главную страницу

Сохранение импортированных сертификатов CA с помощью обновлений Java

Я импортировал внутренние центры сертификации в хранилище ключей CA Java. (Использование keytool для импорта в магазин "cacerts") Это отлично работает, пока я не обновлю RPM 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) сохранить:

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