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. 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.