Tomcat SSL Problem

cham

Erfahrenes Mitglied
Hallo,

ich habe SSL auf dem Tomcat zum fliegen bekommen und wollte nun mein keystore file gern in der Serverdirectory ablegen und nutzen. Soweit so gut...

Jetzt habe ich in der Konfiguration der Connectorfactory diesen Keystore so angegeben, wie dokumentiert:

HTML:
 <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
               port="8023" minProcessors="5" maxProcessors="75"
               enableLookups="true"
	       acceptCount="100" debug="1" scheme="https" secure="true"
               useURIValidationHack="false" disableUploadTimeout="true">
      <Factory className="org.apache.coyote.tomcat4.CoyoteServerSocketFactory"
               clientAuth="false" keystoreFile="conf/.keystore" protocol="TLS" />
    </Connector>

Leider bekomme ich nach dem einfügen von keystoreFile="conf/.keystore" folgenden Fehler:

SCHWERWIEGEND: Endpoint [SSL: ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,localport=8023]] ignored exception: java.net.SocketException: SSL handshake
errorjavax.net.ssl.SSLException: No available certificate corresponds to the SSL cipher suites which are enabled.
java.net.SocketException: SSL handshake errorjavax.net.ssl.SSLException: No available certificate corresponds to the SSL cipher suites which are e
nabled.
at org.apache.tomcat.util.net.jsse.JSSESocketFactory.acceptSocket(JSSESocketFactory.java:154)
at org.apache.tomcat.util.net.PoolTcpEndpoint.acceptSocket(PoolTcpEndpoint.java:387)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:557)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:534)
21.04.2005 16:28:54 org.apache.tomcat.util.net.PoolTcpEndpoint acceptSocket
WARNUNG: Reinitializing ServerSocket
21.04.2005 16:28:54 org.apache.tomcat.util.net.PoolTcpEndpoint acceptSocket

Wenn ich es weglasse funktioniert es, solange das keystore file in meinem Homedirectory liegt.

Wie kann ich das lösen?
 
Hallo!

//EDIT diese vorgehensweise hab ich nur für Tomcat 5 getestet... weis nicht wie sehr dies von der 4er Version abweicht.
hast du nachdem erzeugen des Keystore auch ein Zertifikat erstellt?
Von wegen erzeugen des .Keystore mit:
Code:
E:\tomcat\5.0.28\jakarta-tomcat-5.0.28>keytool -genkey -alias jdar -keyalg RSA -keystore e:\tomcat\5.0.28\jakarta-tomcat-5.0.28\bin\.keystore -dname "cn=Thomas Darimont" -keypass myPassword -storepass myPassword

E:\tomcat\5.0.28\jakarta-tomcat-5.0.28>dir bin\*.keystore
 Datenträger in Laufwerk E: ist DISK1
 Volumeseriennummer: 28A5-8F7B

 Verzeichnis von E:\tomcat\5.0.28\jakarta-tomcat-5.0.28\bin

21.04.2005  22:13             1.192 .keystore
               1 Datei(en)          1.192 Bytes
               0 Verzeichnis(se), 40.736.190.464 Bytes frei

E:\tomcat\5.0.28\jakarta-tomcat-5.0.28>keytool -export -alias jdar -file jdars.crt -keystore e:\tomcat\5.0.28\jakarta-tomcat-5.0.28\bin\.keystore
Geben Sie das Keystore-Passwort ein:  myPassword
Zertifikat in Datei <jdars.crt> gespeichert.

Anschließend muss man das Zertifikat noch in den Tomcat eigenen Keystore importieren.
Das geht so:
Code:
E:\tomcat\5.0.28\jakarta-tomcat-5.0.28>keytool -import -file jdars.crt -keystore e:\tomcat\5.0.28\jakarta-tomcat-5.0.28\conf\cacerts
Geben Sie das Keystore-Passwort ein:  myPassword
Eigent³mer: CN=Thomas Darimont
Aussteller: CN=Thomas Darimont
Seriennummer 42680970
G³ltig ab: Thu Apr 21 22:13:36 CEST 2005 bis: Wed Jul 20 22:13:36 CEST 2005
Zertifikatfingerabdr³cke:
         MD5: C2:08:52:A5:4C:71:E8:34:88:DE:75:08:CC:9E:04:CF
         SHA1: 65:DA:5C:35:E1:F5:39:68:64:5A:19:FC:58:1D:D5:AA:C7:81:BB:B9
Diesem Zertifikat vertrauen? [Nein]:  ja
Zertifikat wurde zu Keystore hinzugef³gt.

Ein passender Connectoreintrag sähe dann so aus:
Code:
Beispiel Connector	
<Connector port="8443" maxThreads="200" minSpareThreads="30" 
	maxSpareThreads="90" enableLookups="false" disableUploadTimeout="true" 
	acceptCount="110" debug="0" scheme="https" secure="true" clientAuth="false" 
	sslProtocol="TLS" keystoreFile="../conf/.keystore" 
	keystorePass="myPassword" truststoreFile="conf/cacerts">
</Connector>

Eintrag im Context / Web.xml
<security-constraint>
	...
		<user-data-constraint>
			<!-- SSL erzwingen ... -->
			<transport-guarantee>CONFIDENTIAL</transport-guarantee>
		</user-data-constraint>
	...
</security-constraint>

HTH,
Gruß Tom
 
Ich habe das Zertifikat erstellt, dann gespeichert und dann entsprechend in einen neuen keystore importiert.

Nachdem ich den keystore aus dem homedirectory dahin kopiert hatte und den dann genutzt hatte ging es. Mir scheint da wohl was bei dem neuerzeugen schiefgegangen zu sein.

Trotzdem danke
 

Neue Beiträge

Zurück