PDA

View Full Version : TomCat e supporto SSL


Unrue
08-04-2005, 20:07
Attualmente sto usando Tomcat 5 per la realizzazione di un Web Service. Il problema è che non mi riesce configurare Tomcat per supporrtare il protocollo di sicurezza SSL. NEl file server.xml ho aggiunto le seguenti righe:
<!-- Define a SSL HTTP/1.1 Connector on port 8443 -->

<Connector className="org.apache.coyote.tomcat5.CoyoteConnector"
port="8443" minProcessors="5" maxProcessors="75"
enableLookups="true" disableUploadTimeout="true"
acceptCount="100" debug="0" scheme="https"
secure="true">


<Factory className=
"org.apache.coyote.tomcat5.CoyoteServerSocketFactory"
keystoreFile="C:\Documents and Settings\gabriele\keystore.jks"
keystorePass="changeit"
clientAuth="false" protocol="TLS" />
</Connector>
Alcune le ho aggiunte, altre le ho scommentate.Ho letto che Tomcat legge i certificati con estensione .keystore, ma quando li creo con l'utility keytool di java essi hanno estensione jks. Non so se è questo il problema. Ho provato anche a creare il connettore HTTPS sulla porta 8443 con l'admin tool di Tomcat ma niente, quando lo riavvio, nel campo del pecorso del keystore mi viene null, lo stesso con la password. Il servizio, alla porta 8443 non parte. Nnn credo sia un problema di librerie java perchè ci sono tutte. Chi mi puo' dire qualcosa?

kingv
09-04-2005, 01:20
PEnso che tu abbia fatto un po' di casino tra la configurazione di tomcat 4 e tomcat 5.
Il connettore di default che utilizza tomcat 5 supporta anche SSL, per cui rimuovi la definizione della Factory.

Tomcat legge i certificati (sarebbe meglio dire i keystore dei certificati) con qualunque estensione. ;)

Unrue
09-04-2005, 12:52
Originariamente inviato da kingv
PEnso che tu abbia fatto un po' di casino tra la configurazione di tomcat 4 e tomcat 5.
Il connettore di default che utilizza tomcat 5 supporta anche SSL, per cui rimuovi la definizione della Factory.

Tomcat legge i certificati (sarebbe meglio dire i keystore dei certificati) con qualunque estensione. ;)

Dove devo mettere il file con estensione jks? Se tolgo la factory gli tolgo sia il percorso che la password. Se la password è diversa da quella di default come gli e la specifico? Grazie.

kingv
09-04-2005, 23:34
Originariamente inviato da Unrue
Dove devo mettere il file con estensione jks? Se tolgo la factory gli tolgo sia il percorso che la password. Se la password è diversa da quella di default come gli e la specifico? Grazie.


il percorso specificalo con l'attributo "keystoreFile" nel tag Connector, la password con "keystorePass".

C4RD0Z4
04-05-2005, 11:52
ciao a tutti,
io avrei bisogno di far si che Tomcat accetti connessioni SSL e per far questo ho letto la guida e dice di aggiungere un Connector dentro il file server.xml. Ora questo file si trova in /etc/tomcat ed è accessibile solo da root; sono diventato root ed ho modificato il file in questione in questo modo:

<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
port="8443" minProcessors="5" maxProcessors="75"
enableLookups="true"
acceptCount="100" debug="0" scheme="https" secure="true"
useURIValidationHack="false" disableUploadTimeout="true">

<Factory className="org.apache.coyote.tomcat4.CoyoteServerSocketFactory"
keystoreFile="/root/server.keystore"
keystorePass="pippoKS"
keystoreType="JKS"
clientAuth="false" protocol="TLS" />

</Connector>

In quanto ho un jdk 1.4, non c'è bisogno di scaricare jsse (Java Secure Socket Extension), dal sito della Sun. Ma io l'ho fatto lo stesso, ed ho preso i 3 file che mi servono (jsse.jar, jcert.jar, jnet.jar), e li ho buttati sotto tomcat/common/lib. Ma facendo delle prove con o senza queste librerie ho constatato che non cambia nulla ed
il mio errore quando do il comando /tomcat/bin/sh catalina.sh run, è sempre :
Using CATALINA_BASE: /opt/jakarta-tomcat-4.1.31
Using CATALINA_HOME: /opt/jakarta-tomcat-4.1.31
Using CATALINA_TMPDIR: /opt/jakarta-tomcat-4.1.31/temp
Using JAVA_HOME: /opt/blackdown-jdk-1.4.2.01
May 5, 2005 2:34:42 PM org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
May 5, 2005 2:34:42 PM org.apache.coyote.http11.Http11Protocol init
SEVERE: Error initializing endpoint
java.io.IOException: Cannot recover key
at org.apache.tomcat.util.net.jsse.JSSE14SocketFactory.init(JSSE14SocketFactory.java:127)
at org.apache.tomcat.util.net.jsse.JSSESocketFactory.createSocket(JSSESocketFactory.java:88)
at org.apache.tomcat.util.net.PoolTcpEndpoint.initEndpoint(PoolTcpEndpoint.java:259)
at org.apache.coyote.http11.Http11Protocol.init(Http11Protocol.java:137)
at org.apache.coyote.tomcat4.CoyoteConnector.initialize(CoyoteConnector.java:1238)
at org.apache.catalina.core.StandardService.initialize(StandardService.java:532)
at org.apache.catalina.core.StandardServer.initialize(StandardServer.java:2199)
at org.apache.catalina.startup.Catalina.start(Catalina.java:462)
at org.apache.catalina.startup.Catalina.execute(Catalina.java:350)
at org.apache.catalina.startup.Catalina.process(Catalina.java:129)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:156)
Catalina.start: LifecycleException: Protocol handler initialization failed: java.io.IOException: Cannot recover key
LifecycleException: Protocol handler initialization failed: java.io.IOException: Cannot recover key
at org.apache.coyote.tomcat4.CoyoteConnector.initialize(CoyoteConnector.java:1240)
at org.apache.catalina.core.StandardService.initialize(StandardService.java:532)
at org.apache.catalina.core.StandardServer.initialize(StandardServer.java:2199)
at org.apache.catalina.startup.Catalina.start(Catalina.java:462)
at org.apache.catalina.startup.Catalina.execute(Catalina.java:350)
at org.apache.catalina.startup.Catalina.process(Catalina.java:129)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:156)
Catalina.stop: LifecycleException: This server has not yet been started
LifecycleException: This server has not yet been started
at org.apache.catalina.core.StandardServer.stop(StandardServer.java:2166)
at org.apache.catalina.startup.Catalina.start(Catalina.java:494)
at org.apache.catalina.startup.Catalina.execute(Catalina.java:350)
at org.apache.catalina.startup.Catalina.process(Catalina.java:129)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:156)
Qualche idea?

C4RD0Z4
05-05-2005, 14:19
up!

Unrue
05-05-2005, 19:11
up!

Il problema non è lo stesso che ho io, potevi aprire un'altro post. Adesso risponderanno a te e non a me.

kingv
05-05-2005, 19:30
up!


posta l'output del comando:
keytool -list -v -keystore /root/server.keystore


cmq ha ragione Unrue, apri un tuo thread ;)

C4RD0Z4
05-05-2005, 23:52
Enter keystore password: pippoSTORE

Keystore type: jks
Keystore provider: SUN

Your keystore contains 2 entries

Alias name: tomcat
Creation date: May 6, 2005
Entry type: trustedCertEntry

Owner: CN="andrea cardelli ", OU=Unknown, O=antani, L=roma, ST=rm, C=italia
Issuer: CN="andrea cardelli ", OU=Unknown, O=antani, L=roma, ST=rm, C=italia
Serial number: 427ab9ca
Valid from: Fri May 06 00:26:50 GMT 2005 until: Thu Aug 04 00:26:50 GMT 2005
Certificate fingerprints:
MD5: 86:12:E6:ED:20:BD:2E:BC:54:62:D4:16:33:E7:5C:CE
SHA1: F9:5A:60:3A:6D:06:CE:B2:C3:0B:D5:CE:0C:8C:8A:0B:D1:C3:4B:75


*******************************************
*******************************************


Alias name: server
Creation date: May 6, 2005
Entry type: keyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=marco cardelli, OU=Unknown, O=supercazzola, L=roma, ST=rm, C=italia
Issuer: CN=marco cardelli, OU=Unknown, O=supercazzola, L=roma, ST=rm, C=italia
Serial number: 427ab8c4
Valid from: Fri May 06 00:22:28 GMT 2005 until: Thu Aug 04 00:22:28 GMT 2005
Certificate fingerprints:
MD5: 92:E0:F4:0A:4D:25:92:5D:23:E3:04:24:60:BC:CC:B7
SHA1: D8:27:5B:8C:8E:14:9D:C6:6E:CC:BA:5E:9D:D2:AE:70:7A:8D:83:2E


*******************************************
*******************************************

kingv
06-05-2005, 08:17
penso che tomcat cerchi la chiave con l'alias "tomcat" ( e tra l'altro guardando nella documentazione non mi sembra esista il modo di specificare un altro alias) e nel tuo keystore per quell'alias non è presente la chiave privata.

rigeneralo con
keytool -genkey -alias tomcat -keyalg RSA -keystore /root/server.keystore

C4RD0Z4
06-05-2005, 10:52
ho cercato aiuto anche da altre parti, ed ho risolto assegnando sia al keystore, che alla chiave contenuta in esso la stessa password :eek: ! C'è una logica in tutto ciò?

kingv
06-05-2005, 10:57
ho cercato aiuto anche da altre parti, ed ho risolto assegnando sia al keystore, che alla chiave contenuta in esso la stessa password :eek: ! C'è una logica in tutto ciò?


giusto alla chiave deve accedere per forza e se ha una password diversa da quella del keystore non ha maniera di aprirla.