{"id":2966,"date":"2023-01-24T18:22:53","date_gmt":"2023-01-24T17:22:53","guid":{"rendered":"https:\/\/bob-team.de\/wordpress\/?p=2966"},"modified":"2026-01-12T17:10:41","modified_gmt":"2026-01-12T16:10:41","slug":"zertifikat-ueber-keystore-nutzen","status":"publish","type":"post","link":"https:\/\/bob-team.de\/wordpress\/2023\/01\/24\/zertifikat-ueber-keystore-nutzen\/","title":{"rendered":"Zertifikat \u00fcber Keystore nutzen \u2605"},"content":{"rendered":"<p><a href=\"https:\/\/letsencrypt.org\/\">Let\u2019s Encrypt<\/a>, <a href=\"https:\/\/www.buypass.com\/products\/tls-ssl-certificates\/resources-tls-ssl-certificates\/products\/buypass-go-ssl-technical-information\">Buypass<\/a>, <a href=\"https:\/\/zerossl.com\/\">ZeroSSL<\/a> + <a href=\"https:\/\/certbot.eff.org\/\">Certbot<\/a> (siehe <a href=\"https:\/\/www.youtube.com\/watch?v=nyjSv5vdEjc\">Let&#8217;s Encrypt Alternative aus Europa?<\/a>)<\/p>\n<h3>Zertifikat umschreiben<\/h3>\n<p><a href=\"https:\/\/github.com\/escline\/InstallCert\">github.com\/escline\/InstallCert<\/a> oder <code>CODE\/InstallCert<\/code><\/p>\n<pre lang=\"bash\">\r\n# erstellt \"jssecacerts\"\r\njava InstallCert.java localhost:8443\r\n<\/pre>\n<pre lang=\"bash\">\r\n-Djavax.net.ssl.trustStore=C:\/Projekt\/jssecacerts\r\n<\/pre>\n<p><a href=\"https:\/\/mkyong.com\/webservices\/jax-ws\/suncertpathbuilderexception-unable-to-find-valid-certification-path-to-requested-target\/\">weiterlesen&#8230;<\/a><\/p>\n<h3>Zertifikat exportieren und einlesen<\/h3>\n<p>Im Browser das Zertifikat anzeigen und als DER-Datei (ein Zertifikat, keine Kette) exportieren. Mit folgendem Befehl exportierte Datein einlesen (z.B. f\u00fcr Maven-Anwendung als Alternative <a href=\"https:\/\/bob-team.de\/wordpress\/2025\/05\/27\/maven-und-windows-zertifikate\/\">zum \u00dcbersteuern<\/a>).<\/p>\n<pre lang=\"bash\">\r\nkeytool -trustcacerts -keystore \"%JAVA_HOME%\\lib\\security\\cacerts\" ^\r\n-storepass changeit -importcert -alias maven-central ^\r\n-file \"path\\to\\demo.crt\"\r\n<\/pre>\n<h3>Zertifikat herunterladen und nutzen<\/h3>\n<pre lang=\"bash\">\r\necho |\\\r\nopenssl s_client -connect ${REMHOST}:${REMPORT} 2>&1 |\\\r\nsed -ne '\/-BEGIN CERTIFICATE-\/,\/-END CERTIFICATE-\/p' \\\r\n> <PATH_TO_CERTIFICATE>\/certificate.cer\r\n<\/pre>\n<p><a href=\"https:\/\/www.madboa.com\/geek\/openssl\/#how-do-i-retrieve-a-remote-certificate\">weiterlesen&#8230;<\/a><\/p>\n<pre lang=\"bash\">\r\nkeytool -keystore <PATH_TO_JRE>\/lib\/security\/cacerts \\\r\n-import -alias certificate \\\r\n-file <PATH_TO_CERTIFICATE>\/certificate.cer\r\n<\/pre>\n<pre lang=\"java\">\r\n\/\/ Path to your keystore where you registred the SSL certficate\r\nString keystorePath = \"<PATH_TO_JRE>\/lib\/security\/cacerts\";\r\nSystem.setProperty(\"javax.net.ssl.keyStore\", keystorePath);\r\n\/\/ Password of your java keystore. Default value is : changeit\r\nSystem.setProperty(\"javax.net.ssl.keyStorePassword\", \"changeit\");\r\n<\/pre>\n<pre lang=\"bash\">\r\n-Djavax.net.ssl.keyStore=\"<PATH_TO_JRE>\/lib\/security\/cacerts\"\r\n-Djavax.net.ssl.keyStorePassword=changeit\r\n<\/pre>\n<p><a href=\"https:\/\/roufid.com\/java-ldap-ssl-authentication\/\">weiterlesen&#8230; (inkl. LDAPS-Beispiel)<\/a><\/p>\n<h3>Zertifikatskette importieren<\/h3>\n<pre lang=\"bash\">\r\n# Kette importieren\r\nkeytool -import -trustcacerts -keystore \/home\/xyz\/config\/xyz.jks \\\r\n-alias x1 -file \/home\/eva\/config\/x1.cer\r\n\r\nkeytool -import -trustcacerts -keystore \/home\/xyz\/config\/xyz.jks \\\r\n-alias r3 -file \/home\/eva\/config\/r3.cer\r\n\r\n# Zertifikat global bereitstellen\r\nkeytool -import -trustcacerts \\\r\n-keystore \/usr\/lib\/jvm\/java-11-openjdk-amd64\/lib\/security\/cacerts \\\r\n-alias xyz -file \/home\/xyz\/config\/xyz.cer\r\n\r\n# Zertifikate auflisten\r\nkeytool -list -v -storepass changeit \\\r\n-keystore \/usr\/lib\/jvm\/java-11-openjdk-amd64\/lib\/security\/cacerts\r\n\r\njava -Djavax.net.debug=all -Djavax.net.ssl.trustStore=\/home\/xyz\/config\/xyz.jks \\\r\n-Djavax.net.ssl.trustStorePassword=$XYZ_JKS_PASS \\\r\n-cp \"$XYZ_JARS\" net.btmx.xyz.MainApp\r\n<\/pre>\n<h3>PFX importieren (inkl. Kennwort\u00e4nderung)<\/h3>\n<pre lang=\"bash\">\r\n# Inhalt \"abcd\" auflisten\r\nkeytool.exe -list -v -keystore abcd.jks\r\n# Alias \"efg\" aus \"abcd\" l\u00f6schen\r\nkeytool -delete -alias efg -keystore abcd.jks\r\n# Zertifikat\/Schl\u00fcssel aus PFX importieren\r\nkeytool -importkeystore -srckeystore win.pfx -srcstoretype pkcs12 -destkeystore abcd.jks -deststoretype JKS\r\n# Aliasname \"1b0b9c\" vom Import ermitteln\r\nkeytool -v -list -keystore abcd.jks\r\n# Kennwort von Import \u00e4ndern\r\nkeytool -keypasswd -keystore abcd.jks -storetype JKS -alias 1b0b9c\r\n# Alias \"1b0b9c\" in \"efg\" \u00e4ndern\r\nkeytool -changealias -alias 1b0b9c -keystore abcd.jks -destalias efg\r\n<\/pre>\n<p>siehe auch <a href=\"https:\/\/bob-team.de\/wordpress\/2012\/10\/31\/crt-und-key-aus-pfx\/\">CRT und KEY aus PFX<\/a><\/p>\n<h3>PEM\/KEY importieren<\/h3>\n<p>Voraussetzung &#8222;openssl&#8220; kannt mit <code>winget install openssl<\/code> installiert werden (Verzeichnis &#8222;C:\\Program Files\\OpenSSL-Win64\\bin&#8220; bei PATH einbinden).<\/p>\n<pre lang=\"bash\">\r\nopenssl pkcs12 -export -in cert.pem -inkey privkey.key -out keystore.p12 -name abc\r\nkeytool -importkeystore -destkeystore keystore.jks -srckeystore keystore.p12 -srcstoretype PKCS12 -alias abc\r\n<\/pre>\n<h3>Fehlermeldung: NoSuchAlgorithmException<\/h3>\n<p>Keytool meldet <code>java.io.IOException: Integrity check failed: java.security.NoSuchAlgorithmException: Algorithm HmacPBESHA256 not available<\/code><br \/>\nEinfache L\u00f6sung war, das Java mit <code>winget install Microsoft.OpenJDK.11<\/code> zu aktualisieren.<\/p>\n<h3>Fehlermeldung: keystore password was incorrect<\/h3>\n<p>Keytool meldet <code>keytool error: java.io.IOException: keystore password was incorrect<\/code><br \/>\nL\u00f6sung war, dem OpenSSL-Export explizit die Verschl\u00fcsselung mit <code>-certpbe PBE-SHA1-3DES -keypbe PBE-SHA1-3DES -macalg SHA1<\/code> vorzugeben.<br \/>\nMit <code>openssl pkcs12 -info -in keystore.p12 -noout<\/code> k\u00f6nnen angewendete Algorithmen abgefragt werden.<\/p>\n<h3>Tomcat-Zertifikat verl\u00e4ngern<\/h3>\n<p>Voraussetzung in <code>\/etc\/ufw\/before.rules<\/code> sind beide Port konfiguriert (443 und 80), muss 80 f\u00fcrs Zertifikatsverl\u00e4ngern nur ge\u00f6ffnet und anschlie\u00dfend wieder geschlossen werden.<\/p>\n<pre lang=\"bash\">\r\n# alles als ROOT ausf\u00fchren\r\nufw allow 80\/tcp\r\nufw allow 60708\/tcp\r\ncertbot renew --webroot --webroot-path \/home\/tomcat\/webapps\/ROOT\r\nopenssl pkcs12 -export -out \/tmp\/abc.demo.de_fullchain_and_key.p12 -in \/etc\/letsencrypt\/live\/abc.demo.de\/fullchain.pem -inkey \/etc\/letsencrypt\/live\/abc.demo.de\/privkey.pem -name abc\r\nchown admin:admin \/tmp\/abc.demo.de_fullchain_and_key.p12\r\ncp \/home\/abc\/config\/abc.demo.de.jks \/home\/abc\/config\/abc.demo.de.jks_250406\r\nkeytool -delete -alias abc -keystore \/home\/ciforms\/config\/abc.demo.de.jks\r\nsource \/home\/abc\/abc.vars && keytool -importkeystore -deststorepass $ABC_JKS_PASS -destkeypass $ABC_JKS_PASS -destkeystore \/home\/abc\/config\/abc.demo.de.jks -srckeystore \/tmp\/abc.demo.de_fullchain_and_key.p12 -srcstoretype PKCS12 -srcstorepass $ABC_JKS_PASS -alias abc\r\nmv \/home\/cif\/config\/abc.demo.de.jks \/home\/cif\/config\/abc.demo.de.jks_250406\r\ncp \/home\/abc\/config\/abc.demo.de.jks \/home\/cif\/config\/abc.demo.de.jks\r\nsystemctl stop abc.service\r\nsystemctl start abc.service\r\nufw status numbered\r\nufw delete xx\r\n<\/pre>\n<p>An Ende von unten nach oben 60708 und 80 wieder l\u00f6schen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Let\u2019s Encrypt, Buypass, ZeroSSL + Certbot (siehe Let&#8217;s Encrypt Alternative aus Europa?) Zertifikat umschreiben github.com\/escline\/InstallCert oder CODE\/InstallCert # erstellt &#8222;jssecacerts&#8220; java InstallCert.java localhost:8443 -Djavax.net.ssl.trustStore=C:\/Projekt\/jssecacerts weiterlesen&#8230; Zertifikat exportieren und einlesen Im Browser das Zertifikat anzeigen und als DER-Datei (ein Zertifikat, keine Kette) exportieren. Mit folgendem Befehl exportierte Datein einlesen (z.B. f\u00fcr Maven-Anwendung als Alternative zum \u00dcbersteuern). [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[207],"class_list":["post-2966","post","type-post","status-publish","format-standard","hentry","category-java","tag-keytool","entry"],"_links":{"self":[{"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/posts\/2966","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/comments?post=2966"}],"version-history":[{"count":37,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/posts\/2966\/revisions"}],"predecessor-version":[{"id":4273,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/posts\/2966\/revisions\/4273"}],"wp:attachment":[{"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/media?parent=2966"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/categories?post=2966"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/tags?post=2966"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}