Die Dokumentation ab Version 39.5.17 von PLANTA project finden Sie in der neuen PLANTA Online-Hilfe.

Tomcat Webserver & Let's Encrypt Zertifikate

Information
  • Um ein Let's Encrypt-Zertifikat bei Tomcat zu hinterlegen, muss das Zertifikat in den Tomcat Keystore importiert werden.

Vorgehensweise

Manuell

Vorgehensweise
  • 1. Tomcat Service stoppen
  • 2. Let's Encrypt Zertifikat mittels certbot certonly --standalone -d [hostname] generieren/aktualisieren.
    • Hierzu muss der Server über das Internet erreichbar sein und die Ports 80 und 443 dürfen nicht belegt sein.
  • 3. In das Verzeichnis der neu erstellten Zertifikats-Dateien wechseln (Standard: /etc/letsencrypt/live/[hostname])
  • 4. Dort mit folgendem Befehl eine temporäre Keystore-File erstellen: openssl pkcs12 -export -in "fullchain.pem" -inkey "privkey.pem" -out "/tmp/keystorefile" -name tomcat -CAfile "chain.pem" -caname root -passout pass:changeit
  • 5. Den alten Tomcat-Keystore (Standard: /var/lib/tomcat/cert/[hostname].pkcs12) löschen.
  • 6. In das Verzeichnis der neu erstellten Keystore-File wechseln.
  • 7. Dort mit dem folgenden Befehl diese in den Tomcat-Keystore importieren: keytool -importkeystore -deststorepass changeit -destkeypass changeit -destkeystore "/var/lib/tomcat/cert/[hostname].pkcs12" -srckeystore "/tmp/keystorefile" -srcstoretype PKCS12 -srcstorepass changeit -alias tomcat
    Gegebenenfalls muss die Konfigurationsdatei /usr/share/tomcat/conf/server.xml angepasst werden, sodass auf die richtige keystorefile verwiesen wird:
         <Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
                      maxThreads="150" SSLEnabled="true"
                      scheme="https" secure="true"
                      SSLProtocol="TLSv1.2"
                      keystoreFile="/var/lib/tomcat/cert/[hostname].pkcs12" keystorePass="changeit"
                      clientAuth="false"
                      />
       
  • 8. Temporäre Keystore-File löschen
  • 9. Tomcat Service starten

Automatisch

Ein Bash Script hierfür sieht zum Beispiel so aus:

#!/usr/bin/env bash

set -o nounset

# Verzeichnis der Let's Encrypt Zertifikate
DIR=/path/to/cert-files
# Verzeichnis zum Zwischenspeichern der Keystore-File
TEMPDIR=/tmp
# Verzeichnis des Tomcat Keystores
KEY=/path/to/tomcat-keystore
# Log File
LOG=renew.log
# Zusätzliches Log File mit der Ausgabe vom certbot
TEMP_LOG=temp_renew.log

{
echo "----------------------------------$(date)----------------------------------"

echo "Stopping Tomcat.."
systemctl stop tomcat.service

echo "Renewing Certificates.."
certbot certonly -n --standalone -d [hostname] |& tee "${TEMP_LOG}"

if grep -q Congratulations "${TEMP_LOG}"; then

echo "Changing Directory to ${DIR}"
pushd "${DIR}" > /dev/null
echo "Creating new Keystore.."
openssl pkcs12 -export -in "fullchain.pem" -inkey "privkey.pem" -out "${TEMPDIR}/keystorefile" -name tomcat -CAfile "chain.pem" -caname root -passout pass:changeit
popd > /dev/null

if [ -f "${KEY}" ]; then
echo "Keystore ${KEY} already exists. Deleting.."
rm "${KEY}"
fi

echo "Changing Directory to ${TEMPDIR}"
pushd "${TEMPDIR}" > /dev/null
echo "Importing new Keystore into Tomcat.."
keytool -importkeystore -deststorepass changeit -destkeypass changeit -destkeystore "${KEY}" -srckeystore "${TEMPDIR}/keystorefile" -srcstoretype PKCS12 -srcstorepass changeit -alias tomcat
popd > /dev/null

echo "Cleanup.."
rm "${TEMPDIR}/keystorefile"

fi

echo "Starting Tomcat.."
systemctl start tomcat.service

echo "----------------------------------$(date)----------------------------------"

} |& tee -a "${LOG}"

         PLANTA project









 
  • Suche in Topic-Namen

  • Suche in Topic-Inhalten
This site is powered by the TWiki collaboration platform Powered by Perl