# HTTPS bei Tomcat aktivieren > von [Ulrich Hilger](/), 22. Dezember 2019 Damit Tomcat Inhalte via HTTPS ausliefert ist eine `.keystore`-Datei im Verzeichnis `$CATALINA_BASE/conf` erforderlich. Die `.keystore`-Datei muss ein Zertifikat enthalten, das beispielsweise mit Hilfe der Organisation [Let's Encrypt](https://letsencrypt.org/) erzeugt werden kann. Zur Erzeugung eines Zertifikats kann beispielsweie das Programm [certbot](https://certbot.eff.org/) der [Electronic Frontier Foundation](https://www.eff.org/) verwendet werden. Mit folgendem Kommando ist `certbot` auch mit Docker ausführbar: ``` docker run -it --rm -p 443:443 -p 80:80 --name certbot -v "/etc/letsencrypt: /etc/letsencrypt" -v "/var/lib/letsencrypt:/var/lib/letsencrypt" certbot/certbot certonly ``` Das obige Docker-Kommando wird idealerweise auf einer virtuellen Maschine ausgeführt. Mit Verwendung von [VirtualBox](https://virtualbox.org), [Alpine Linux](https://alpinelinux.org/) und der [Anleitung](https://wiki.alpinelinux.org/wiki/Docker) im Alpine-Wiki zur Installation von Docker lässt sich eine solche erstellen. `certbot` muss auf der Maschine ausgeführt werden, die unter der Domain erreichbar ist, für die das Zertifikat erzeugt werden soll. Soll zum Beispiel ein Zertifikat für `example.com` erzeugt werden, muss die Maschine, auf der `certbot` ausgeführt wird, auf Anfragen an `example.com` antworten. `certbot` gibt beim Ablauf Anweisungen auf der Kommandozeile aus, die von Hand auf der Kommandozeile zu beantworten sind. Die Automatisierung dieses Teils ist möglich, wird aber an dieser Stelle nicht beschrieben. Nach der Ausführung von `certbot` liegen die Zertifikate im Verzeichnis `/etc/letsencrypt/archive/[Domain-Name]` der virtuellen Maschine und können in den Keystore von Tomcat übertragen werden. Eine Anleitung für diesen Schritt nebst Skript wird z.B. bei [Fancysoftware](https://fancysoftware.de/blog/how-to-lets-encrypt-und-tomcat/) bereitgehalten. Ist das Zertifikat im Keystore abgelegt wird in der Datei `$CATALINA_BASE/conf/server.xml` ein Konnektor für HTTPS hinzugefügt, der wie folgt aussieht: ``` <Connector executor="tomcatThreadPool" port="8443" protocol="HTTP/1.1" maxHttpHeaderSize="8192" SSLEnabled="true" maxThreads="150" minSpareThreads="25" enableLookups="false" disableUploadTimeout="true" acceptCount="100" scheme="https" secure="true" keystoreFile="conf/.keystore" keystorePass="changeit" clientAuth="false" sslProtocol="TLS" useBodyEncodingForURI="true" ciphers="TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_DSS_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_SHA256, TLS_ECDHE_ECDSA_WITH_AES_128_SHA256, TLS_ECDHE_RSA_WITH_AES_128_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_SHA, TLS_ECDHE_RSA_WITH_AES_256_SHA384, TLS_ECDHE_ECDSA_WITH_AES_256_SHA384, TLS_ECDHE_RSA_WITH_AES_256_SHA, TLS_ECDHE_ECDSA_WITH_AES_256_SHA, TLS_DHE_RSA_WITH_AES_128_SHA256, TLS_DHE_RSA_WITH_AES_128_SHA, TLS_DHE_DSS_WITH_AES_128_SHA256, TLS_DHE_RSA_WITH_AES_256_SHA256, TLS_DHE_DSS_WITH_AES_256_SHA, TLS_DHE_RSA_WITH_AES_256_SHA" /> ``` Zugleich sollte der Thread Pool mit folgendem Eintrag in `server.xml` aktiviert werden: ``` <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="150" minSpareThreads="4"/> ``` Dieser Thread Pool ist bereits weiter oben im HTTPS-Konnektor berücksichtigt und sollte auch für den HTTP-Konnektor verwendet werden: ``` <Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> ``` Der HTTP-Konnektor ohne Thread Pool kann dann auskommentiert werden. Nach einem Neustart ist HTTPS für Tomcat aktiviert.