Let’s encrypt in der Praxis
Eine professionelle Website sollte mit HTTPS funktionieren. Inzwischen gibt es Zertifizierungsstellen, die kostenfrei sind, so z.B. let’s encrypt. Provider wie Strato bieten diese Zertifizierungsmöglichkeit schon auf Knopfdruck an. Habe ich einen eigenen Server mit einigen Tomcat-Installationen, wird es dann problematisch, wenn der Tomcat nicht die Standardports nutzt. Ich habe z.B. auf meinem Server Bitbucket, Jira und Confluence laufen. Confluence hört auf die Standardports und ist somit mit der Standartinstallation abgedeckt, die anderen Tomcats laufen jedoch nicht mit dem generiertem Prozess.
Also muss man selbst Hand anlegen.
Let’s encrypt installieren
Ich arbeite unter Linux (Ubuntu). Zur installation benötigt es diese drei Befehle:
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install python-certbot-apache
Danach kann das let’s encrypt Zertifikat generiert werden:
sudo certbot --manual -d mwolff.info
Der Outpout ist eine Aufforderung eine Datei mit einem bestimmten Datenmuster zu erzeugen wie z.B.:
zIZX8A_QUvpi0jX12345hRK_dwR67890pM4LOmmuo_yYasd34dghnk9ebv84slXToAuai0
Die Datei muss dann unter einer bestimmten URL für lets encrypt zugänglich sein. Das ist der Validierungsprozess. Ich kann dann nachgucken, ob die Zertifizierung erfolgreich war:
https://www.ssllabs.com/ssltest/analyze.html?d=example.com&latest
Zertifikate erstellen
Der nächste Schritt ist dann das Zertifikat zu erstellen. Der certbot erzeugt eine Datei Namens fullchain.pem, die nun weiter genutzt werden kann.
openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out fullchain_and_key.p12 -name tomcat
Über das Java keytook kann dann der erstellte Key in den Schlüsselbund eingestellt werden.
keytool -importkeystore -deststorepass yourJKSpass -destkeypass yourKeyPass -destkeystore MyDSKeyStore.jks -srckeystore fullchain_and_key.p12 -srcstoretype PKCS12 -srcstorepass yourPKCS12pass -alias tomcat
Der letzte Schritt ist dann im Tomcat den Schlüssel im Connector einzufügen.
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" URIEncoding="UTF-8" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="/myPathToTheKeystore/MyDSKeyStore.jks" keystorePass="yourJKSpass" keyAlias="tomcat" keyPass="yourKeyPass"/>