Einschalten von TLS (SSL) im Tomcat

Aufgabenstellung: Eine „sichere“ Verbindung zwischen dem Browser und dem Server.

Das Tomcat auf dem https Port lauscht, muss in der server.xml Connector aktiviert werden. Hierzu werden einfach die Kommentarzeichen aus der xml-Datei um den Eintrag


entfernt.

Nach dem Serverstart stellt man aber fest das kein Port 8443 geöffnet. Beim starten noch ein java.io.FileNotFoundException, dass das System die .keystore Datei im Benutzerverzeichnis nicht finden kann, deswegen wird der Port 8443 nicht geöffnet.

Zum Testen müssen wir uns ein eigenes Zertifikat erstellen. Im Verzeichnis ./java/bin befindet sich ein Programm mit dem Namen keytool, welches ein Zertifikat für den Tomcat erstellen kann. Selbst erstellte Zertifikat müssen dann manuell im Browser akzeptiert werden aber zum testen reichen sie.

Erstellung eines eigenen Zertifikates unter Windows:

Öffnet mit der [WINDOWS] Taste + R ein Eingabefeld und führt darin cmd aus. Wechselt in das ./java/bin Verzeichnis wo sich keytool.exe befindet. Hier bei mir ist der Pfad zu ./java/bin in der Umgebungsvariable eingetragen und ich kann alle Programme aus dem ./java/bin Verzeichnis von überall aufrufen.

keytool.exe wird mit einigen Parametern aufgerufen.
Der Aufruf um das Zertifikat zu erstellen.

keytool -genkey -v -keyalg RSA -alias tomcat

Weiter Aus und Eingaben

C:\>keytool -genkey -v -keyalg RSA -alias tomcat
Keystore-Kennwort eingeben:
Neues Kennwort erneut eingeben:
Wie lautet Ihr Vor- und Nachname?
  [Unknown]:  Markus Potthast
Wie lautet der Name Ihrer organisatorischen Einheit?
  [Unknown]:  beschäftigungs-therapie.de
Wie lautet der Name Ihrer Organisation?
  [Unknown]:  beschäftigungs-therapie.de
Wie lautet der Name Ihrer Stadt oder Gemeinde?
  [Unknown]:  Herten
Wie lautet der Name Ihres Bundeslands?
  [Unknown]:  NRW
Wie lautet der Lõndercode (zwei Buchstaben) f³r diese Einheit?
  [Unknown]:  DE
Ist CN=Markus Potthast, OU=beschäftigungs-therapie.de, O=beschäftigungs-therapie
.de, L=Herten, ST=NRW, C=DE richtig?
  [Nein]:  ja

Generieren von Schl³sselpaar (Typ RSA, 2.048 Bit) und selbst signiertem Zertifik
at (SHA256withRSA) mit einer G³ltigkeit von 90 Tagen
        f³r: CN=Markus Potthast, OU=beschäftigungs-therapie.de, O=beschäftigungs
-therapie.de, L=Herten, ST=NRW, C=DE
Schl³sselkennwort f³r  eingeben
        (RETURN, wenn identisch mit Keystore-Kennwort):
Neues Zertifikat (selbst signiert):
[
[
  Version: V3
  Subject: CN=Markus Potthast, OU=beschäftigungs-therapie.de, O=beschäftigungs-t
herapie.de, L=Herten, ST=NRW, C=DE
  Signature Algorithm: SHA256withRSA, OID = 1.2.840.113549.1.1.11

  Key:  Sun RSA public key, 2048 bits
  modulus: 176412117125573555783345877158900337130289316272106119393431441276618
99670416541147521716018885199910521053703079060756764931573795653747030858087869
88230268971320421327204550110849263949848267360773408494377534199111580722358064
37212424284076487343323873040114971037299751614547602616187555302420458752697057
65730886341053132031782866275865042745256001816104451405186882110491416055705443
69528601539116589322412889774587948169323913867260912531821617083914049005958980
48151988593756538903722379561277997772984038962209750628473570426093199150563007
66634438513228803312590145239096430274363001757427247837591299226113
  public exponent: 65537
  Validity: [From: Tue Jan 08 13:21:36 CET 2013,
               To: Mon Apr 08 14:21:36 CEST 2013]
  Issuer: CN=Markus Potthast, OU=beschäftigungs-therapie.de, O=beschäftigungs-th
erapie.de, L=Herten, ST=NRW, C=DE
  SerialNumber: [    38ec5c2b]

Certificate Extensions: 1
[1]: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 2D 35 03 C5 E5 0A 12 E8   21 B2 A6 FD 3F F3 14 AB  -5......!...?...
0010: 5D 0F AA 9B                                        ]...
]
]

]
  Algorithm: [SHA256withRSA]
  Signature:
0000: 36 1A C2 B9 12 97 FD F4   4D 6D E0 CA BF 96 B4 F5  6.......Mm......
0010: 0C 30 F0 CB 7E 6C 71 60   AE 71 43 55 E8 EB 32 5B  .0...lq`.qCU..2[
0020: 29 0B 7A E7 3F B3 73 8C   4E 56 70 25 AA 81 51 EB  ).z.?.s.NVp%..Q.
0030: 36 91 46 A7 14 42 29 45   65 19 6E 98 65 9B 68 0B  6.F..B)Ee.n.e.h.
0040: E5 F2 0B E8 F1 7E AC 37   E5 2C 50 73 22 CD E0 21  .......7.,Ps"..!
0050: 49 07 64 54 10 F8 50 62   3E 8F 80 63 EC F5 F6 3C  I.dT..Pb>..c...<
0060: 89 63 50 60 DE 2E 19 DB   F0 46 30 12 11 02 C8 D0  .cP`.....F0.....
0070: 98 B4 F3 01 B9 18 57 22   EF FE B9 3C 32 0E 75 C5  ......W".....`.(.I...5<...
00E0: 65 6E DC 83 32 F8 94 35   35 32 E7 80 A4 3B F0 C2  en..2..552...;..
00F0: FC 18 E2 A8 6F 6C E1 44   9A 72 EC 35 C8 A0 98 9A  ....ol.D.r.5....

]

jetzt wird automatisch die Datei .keystore erstellt und danach in das Benutzerverzeichnis an die richtige Stelle kopiert, dass Tomcat sie beim Start finden und lesen kann.

Wichtig hierbei ist, dass das Keystore-Kennwort und das „Schl³sselkennwort f³r eingeben“ Kennwort changeit ist.

Es ist auch möglich alles mit Parameter zu übergeben

keytool -genkey -v -keyalg RSA -alias tomcat -keypass changeit -storepass changeit -dname "CN=Markus Potthast, OU=beschäftigungs-therapie.de, O=beschäftigungs-therapie.de, L=Herten, S=NRW, C=DE"

Den Tomcat Server starten oder neustart. Jetzt werdet ihr in der Ausgabe folgende Zeilen finden: (hier nur ein Auszug)

Information: Starting ProtocolHandler ["http-bio-8084"]
Information: Starting ProtocolHandler ["http-bio-8443"]
Information: Starting ProtocolHandler ["ajp-bio-8009"]

Der Server lauscht jetzt an Port 8084,8443 und an Port 8009.

Nun wäre der Tomcat erst einmal bereit Anfragen über https anzunehmen. Was jetzt noch fehlt ist im Deployment Descriptor mitzuteilen was (in unserem Beispiel ein Verzeichnis) mit https abgerufen werden soll und muss.

        TLS
        /ssl/*

        CONFIDENTIAL

Jetzt werden alle Dateien im Verzeichnis ./ssl/ mit der https Verbindung aufgerufen. Beim ersten Start der Seite erscheint jedoch erst einmal die Wahrung wegen unserem selbst signierten Zertifikat.
ssl_first
In der Adresszeile des Browser kann man aber erkennen, dass die Anfrage https ist.
Einfach nur noch die Sicherheis-Ausnahmeregel bestätigen und man kommt auf die Seite.

Für die Linux-Nutzer unter euch geht das eigentlich genauso. Man wird nur keine keytool.exe finden, hier heißt das Programm einfach nur keytool.

Sollte immer noch was unklar sein, fragt!!

Über Markus Potthast 54 Artikel
Der Senior Software Developer im Angestelltenverhältnis hat zum Hauptthema natürlich die Programmierung und Entwicklung von Webanwendungen. Gelegentlich finden sich hier auch Krazy Netzfundstücke.

Ersten Kommentar schreiben

Antworten

Deine E-Mail-Adresse wird nicht veröffentlicht.


*


eMail-Benachrichtigung bei weiteren Kommentaren.
Auch möglich: Abo ohne Kommentar.