Dnes jsem řešil pěkně vypečenej zadrhel. Před dvouma měsícema se spoustela aplikace, běžící na tomcatu, která vyžadovala užití SSL certifikátu, který app. používala pro komunikaci s jiným serverem. Vývojář vytvořil KEYSTORE a do nej uložil dodaný certifikát.
Úprava nastavení tomcatu byla následující
KEYSTORE=$CATALINA_HOME/conf/keystore
JAVA_OPTS=" ... -Djavax.net.ssl.trustStore=$KEYSTORE/mycert.truststore -Djavax.net.ssl.trustStorePassword=changeit"
Vše fungovalo. Až do doby, než se řešil problém ostatních aplikací, které dle vyjádření Java programátora nevidí Root CA certifikáty. Blesklo mi hlavou, že se to tou předchozí volbou přenastavilo.
Pátral jsem, kde má tomcat nejaké definice o keystore a nic jsem nenašel. Tak jsem hledal níže a kořenové certifikátý jsem našel v JDK.
find jdk1.6.0_21/ -name '*cert*'
jdk1.6.0_21/jre/lib/security/cacerts
Daný soubor obsahuje kořenové certifikáty certifikačních autorit, obdobně jako tomu je u prohlížečů. Pro řešení problému jsem vyexportoval certifikát z lokálního uložiště a importoval do cacert JVM, který zjevně užíva tomcat i v něm deployované aplikace (bez nutnosti nějaké konfigurace). Pro manipulaci s certifikátama java používá aplikaci keytool.
keytool -keystore mycert.truststore -list
keytool -keystore mycert.truststore -exportcert -file exportkey.crt
keytool -keystore cacerts -list
chmod 666 cacerts
keytool -keystore cacerts -importcert -file exportkey.crt
chmod 444 cacerts
Po restartu tomcatu a odstranění nevhodné konfigurace lokálního keystore z JAVA_OPTS, vše opět zařalo fungovat.
Doporučení: Po každé instalaci JVM (jre nebo jdk) je velmi vhodné změnit defaultní heslo "changeit" na nějaké bezpečnější.
Charitativní orientační závod MTB
-
Závod se koná 4.10.2024, start 15:00 v Černé Vodě, startovné dobrovolné
500,- na učet 11559889/5500
před 2 dny
Žádné komentáře:
Okomentovat