Freitag, 20. Oktober 2017

[TOMCAT][SSL] Lets Encrypt mit Apache Tomcat nutzen

Wichtig: Der Apache muss mit Port 80 erreichbar sein!
Gegebenenfalls muss Apache angepasst werden

Lets Encrypt Win Simple installieren, oder sofern ein IIS vorhanden, CertifyTheWeb (siehe Nachtrag!):

https://github.com/Lone-Coder/letsencrypt-win-simple


letsencrypt.exe via CMD starten


E-mail angeben und akzeptieren

Neues zertifikat: N
Manuel die Hostnamen eingeben: 4
Hostnamen eingeben (kommagetrennt): mail.contoso.com, xy.contoso.com

Webroot ist bei Apache:
C:\Program Files\Apache Software Foundation\Tomcat 8.0\webapps


Sollte alles korrekt sein, wird nun das zertifikat, die Pfade etc erstellt. 
Wichtig hierbei:
Authorization result: valid

Für das erneuern wird eine Windows Aufgabe erstellt, ich würde keinen Benutzer angeben, also: N

Neustarten wollen wir nicht, sofern alles geklappt hat, also: N



CygWin installieren (https://cygwin.com/install.html) (Einfach weiter, OpenSSL ist standardmässig dabei)

oder alternativ eine Binarie:
https://wiki.openssl.org/index.php/Binaries

In Notepad++ (https://notepad-plus-plus.org/) ein neues Shellscript erstellen:

#!/bin/bash
cd "C:\ProgramData\letsencrypt-win-simple\httpsacme-v01.api.letsencrypt.org"
openssl pkcs12 -export -in domainname-crt.pem -inkey domainname-key.pem -out cert_and_key.p12 -password pass:PASSWORT

Wichtig: bearbeiten -> format zeilenende -> unix

Das File als LE_TO_PKCS12.sh speichern in: C:\cygwin64\home\Administrator

In C:\cygwin64 ein neues .bat File erstellen: LETSENCRYPT_TO_TOMCAT.bat

C:\cygwin64\bin\bash --login -c "./LE_TO_PKCS12.sh"
ping localhost
"C:\Program Files\Apache Software Foundation\Tomcat 8.0\bin\tomcat8.exe" stop
"C:\Program Files\Apache Software Foundation\Tomcat 8.0\bin\tomcat8.exe" start


Tomcat "servers.xml" anpassen: webroot\conf\servers.xml
keystoreFile="C:\ProgramData\letsencrypt-win-simple\httpsacme-v01.api.letsencrypt.org\cert_and_key.p12"
keystoreType="PKCS12"
keystorePass="PASSWORT"

Das Batchfile "LETSENCRYPT_TO_TOMCAT.bat" in der Aufgabenplanung für eine Monatliche ausführung planen.
Testweise die Aufgabe gleich einmal ausführen



NACHTRAG:
Bei CertifyTheWeb, würde das .sh script wie folgt aussehen:
#!/bin/bash
cd "C:\ProgramData\ACMESharp\sysVault\99-ASSET"
openssl pkcs12 -in cert_ident1652b3d9-all.pfx -clcerts -nokeys -out domain.cer -password pass:
openssl pkcs12 -in cert_ident1652b3d9-all.pfx -nocerts -nodes  -out domain.key -password pass:
openssl pkcs12 -in cert_ident1652b3d9-all.pfx -out domain-ca.crt -nodes -nokeys -cacerts -password pass:


openssl pkcs12  -in cert_ident1652b3d9-all.pfx -out domain.pem -nokeys -clcerts -password pass:
openssl pkcs12 -export -in domain.pem -inkey domain.key -out cert_and_key.p12 -password pass:PASSWORT


Der KeystoreFile-Pfad wäre dann auch entsprechend:
C:\ProgramData\ACMESharp\sysVault\99-ASSET\cert_and_key.p12

Keine Kommentare:

Kommentar veröffentlichen