Dies ist eine AlteSeite aus unserem UseModWiki bei Sourceforge.

Bitte überarbeite die Seite, passe die Formatierung für das JSPWiki an und entferne diesen Text.

Vielen Dank!

= SSL Zertifikat für
Tomcat erzeugen =

Wenn man Tomcat als Webserver nutzt, kann man einen HTTPS-Listener
konfigurieren und so über SSL verschlüsselte Verbindungen nutzen.

Mit einigen Einträgen in ''web.xml'' kann man auch dafür sorgen,
daß eine Authentifizierung vorgeschrieben ist. Die
Benutzerdatenbank steht in
''/var/lib/tomcat4/conf/tomcat-users.xml''. Wer eine vernünftige
Sicherheit haben will, sollte über eine Basic-Authentication (oder
Formular-Auth.) hinaus nur noch SSL-Verbindungen annehmen.

Folgender Eintrag gehört dazu in ''/etc/tomcat4/server.xml''.
Eigentlich sollte der laut Doku dort auskommentiert schon stehen,
tat er aber in meiner Debian-Installation nicht.

=== Beispiel 1 ===

  <Connector port="8443"
      maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
      enableLookups="false" disableUploadTimeout="true"
      acceptCount="100" scheme="https" secure="true"
      clientAuth="true" sslProtocol="TLS"
      keystoreFile="/usr/share/tomcat4/.keystore"
keystorePass="changeit" />

=== Beispiel 2 ===

<pre>
  <!-- Define an SSL HTTP/1.1 Connector on port 8443 -->
  <Connector
className="org.apache.catalina.connector.http.HttpConnector"
           port="8443" minProcessors="5" maxProcessors="75"
           enableLookups="true"
           acceptCount="10" debug="0" scheme="https"
secure="true">
      <Factory
className="org.apache.catalina.net.SSLServerSocketFactory"
               clientAuth="false" protocol="TLS"/>
  </Connector>
</pre>


In der Java-Welt benutzt man für die Verwaltung von
SSL-Zertifikaten das "keytool", das man im "bin"-Verzeichnis des
Java-SDK findet.

Um das nötige Zertifikat zu erzeugen und zu signieren bin ich
folgendermaßen vorgegangen:

1. Key erzeugen mit:
  
  keytool -genkey -keystore /usr/share/tomcat4/.keystore -alias
tomcat

Hier genügt es, im Namensfeld (auf die Frage "What is your first
and last name?") den Domainnamen anzugeben, also z.B.
"ssl.example.org". Alle anderen Felder werden von CACert nicht
zertifiziert, weil CACert die Angaben nicht prüfen kann. Bei einem
kostenpflichtigen Zertifikat, z.B. von Verisign, sollten die
Angaben natürlich vollständig sein und zertifiziert werden.

2. Einen Zertifikat-Request für die CA exportieren mit: 

  keytool -certreq -keystore /usr/share/tomcat4/.keystore -alias
tomcat -file keyrequest.csr

3. Das Zertifikat signieren. Bei http://cacert.org kann man
Zertifikate kostenlos signieren lassen. Nachteil: Das
Root-Zertifikat von CACert ist bisher nicht in den Browsern
hinterlegt. Daher muss ich die Root-Zertifikate von CACert in
meinen Keystore importieren:

  wget http://www.cacert.org/certs/root.crt
  wget http://www.cacert.org/certs/class3.crt
  keytool -import -keystore /usr/share/tomcat4/.keystore -alias
cacertclass1ca -import -trustcacerts -file root.crt
  keytool -import -keystore /usr/share/tomcat4/.keystore -alias
cacertclass3ca -import -trustcacerts -file class3.crt

4. Import des signierten SSL-Zertifikats: Ich speichere das
Zertifikat in einer Datei "cert.pem".

  keytool -import -keystore /usr/share/tomcat4/.keystore -v
-trustcacerts -alias tomcat -file cert.pem

Das war's schon.

Alternativ kann man natürlich auch mit einem selbstzertifizierten
SSL-Key arbeiten. Dazu fallen die Punkte 2. bis 4. weg. Stattdessen
ruft man auf:

  keytool -selfcert -keystore /usr/share/tomcat4/.keystore -alias
tomcat

kurz-und-bündig-Lösung von Thomas:

    keytool -genkey -alias tomcat -keyalg RSA
    mv /root/.keystore /usr/share/tomcat4/
    chown tomcat4 /usr/share/tomcat4/.keystore
    chmod u+r  /usr/share/tomcat4/.keystore
    chmod go-rw  /usr/share/tomcat4/.keystore

Danach gibt es einen SSL-Zugang zum Tomcat auf Port 8443 (also am
besten mal mit "https://hostname:8443/" probieren).

Mit weiteren Einträgen in der web.xml kann man nun auch dafür
sorgen, daß unsere Web-Applikation nur noch SSL-Verbindungen
annimmt. Natürlich kann man auch die nicht-SSL-Connectoren aus der
server.xml entfernen, was dann für alle Tomcat-Appliaktionen gilt.
Damit hat man die optimale SSL-Sicherheit.


== Client Authentifizierung ==

Weiterhin können sich auch Clients über ein SSL-Zertifikat beim
Server authentifizieren. 

Genaueres dazu findet sich bei entwickler.de:
http://www.entwickler.de/zonen/portale/psecom,id,101,online,832,p,0.html

-- PeterHormanns und ThomasBayen