Przenoszenie certyfikatów między keystore`ami Java

By in
Przenoszenie certyfikatów między keystore`ami Java

Kto lubi robić upgrade Jira? Confluence? Bitbucket? Ja! Ale operacja ta na pewno nie byłaby tak satysfakcjonująca, gdyby wszystkie czynności trzeba było wykonywać ręcznie. Jedną z nich jest przenoszenie certyfikatów pomiędzy keystore`ami Java. Dziś chcę podzielić się z Wami skryptem, który pozwala zautomatyzować ten proces.

Przepinając aplikację na nowo zainstalowaną Javę będziemy musieli przenieść certyfikaty, którym Java ufa, ze starego keystore do nowego. Poniższy skrypt zrobi całą pracę za nas, korzystam z niego przy każdym upgrade. Niebawem również przygotuję dla Was post, w którym opiszę całą procedurę, z jakiej korzystam, podczas upgrade aplikacji ze stacku Atlassian. Skrypt możecie znaleźć również w moim repozytorium.

 

#!/bin/bash

OLD_PATH="jdk1.8.0_261/jre/lib/security/cacerts"
NEW_PATH="jre1.8.0_281/lib/security/cacerts"
KEYTOOL="jdk1.8.0_261/jre/bin/keytool"

mkdir tmpc
mkdir tmpc/certs_to_import/
touch tmpc/certs_new tmpc/certs_old tmpc/certs_new_jdk tmpc/certs_old_jdk tmpc/certs_to_export

$KEYTOOL -list -keystore $NEW_PATH > tmpc/certs_new
awk -F"[, ]" '{print $1}' tmpc/certs_new | grep -Ev '(Certificate|Keystore|Your)' | sort > tmpc/certs_new_jdk

$KEYTOOL -list -keystore $OLD_PATH > tmpc/certs_old
awk -F"[, ]" '{print $1}' tmpc/certs_old | grep -Ev '(Certificate|Keystore|Your)' | sort > tmpc/certs_old_jdk

diff --color tmpc/certs_old_jdk tmpc/certs_new_jdk | grep "<" | awk '{print $2}' > tmpc/certs_to_export

#export certs from the old keystore:
while IFS= read -r LINE; do
$KEYTOOL -export -alias "$LINE" -storepass changeit -keystore $OLD_PATH -file tmpc/certs_to_import/"$LINE".crt
done < tmpc/certs_to_export

#import certs to the new keystore:
while IFS= read -r LINE; do
$KEYTOOL -import -alias $LINE -file tmpc/certs_to_import/$LINE.crt -storepass changeit -keystore $NEW_PATH -noprompt
done < tmpc/certs_to_export

rm -rf tmpc

A teraz trochę wyjaśnienia. Na początku musimy podać trzy zmienne: ścieżkę starego i nowego keystore oraz ścieżkę narzędzia keytool. Są to standardowe lokalizacje. Skrypt utworzy nam katalog i pliki, w których zapisze nazwy wszystkich certyfikatów z obu keystore`ów. Następnie porówna je, wyeksportuje ze starego te, których brakuje w nowym, a następnie zaimportuje je do nowego keystore. Potem jeszcze tylko po sobie posprząta i tyle:) Miłej zabawy. W razie pytań piszcie na contact [at] jiraforthepeople.com.

Leave a reply

Twój adres e-mail nie zostanie opublikowany.