cancel
Showing results for 
Search instead for 
Did you mean: 

Alfresco sobre SSL (Apache+Tomcat+SSL+mod_jk)

vlopez
Champ in-the-making
Champ in-the-making
Saludos.

Estoy haciendo pruebas para colocar Alfresco (3.2) en un servidor que atienda peticiones desde Internet. He optado por conectar Tomcat (5.5.28) con Apache (2.2) a través de mod_jk y hacer que Apache atienda estas peticiones a través de conexión segura SSL (puerto 443).
Con esta configuración montada y en funcionamiento me surgen algunas cuestiones al respecto:
1.- He montado reglas de cortafuegos para que no se realicen peticiones por el puerto 8080, pero ¿sería posible también hacer que Tomcat no responda a las peticiones realizadas por este puerto, o lo que es lo mismo, forzarlo a que escuche por el puerto 8009?
2.- Mediante el cliente web no es posible acceder a Alfresco como no sea mediante una conexión segura (Apache sobre SSL y regla de cortafuegos cerrando el 8080), pero resulta que si puedo conectarme mediante CIFS. He anulado esta conexión poniendo a false esta conexión en file-servers.properties, también he inabilitado la autenticación CIFS en alfresco-authentication.properties. Con esto ya no accedo a través de CIFS, pero la pregunta es ¿es necesario adoptar alguna medida adicional, ya sean en la configuración de Alfresco o en la del cortafuegos?.
3.- ¿Sabría alguién decirme como habilitar el acceso mediante WebDav sobre SSL teniendo en cuenta que estoy usando mod_jk?
17 REPLIES 17

cesarista
World-Class Innovator
World-Class Innovator
Hola tini:

Ahi van mis respuestas, espero que te ayuden:

1. A nivel de servidor Tomcat, siempre puedes definir modificar el conf/server.xml, comentar el conector http en el 8080 y activar el conector ajp13 en 8009, de modo que en el mod_jk defines la redirección en el workers del apache hacia el 8009. Con esto no serían necesarias las reglas de cortafuegos, aunque habría que ver como tira Alfresco (porque es la config al reves de por defecto).

2. Podrías securizar el Tomcat en vez del Apache, comentando el conector http en el 8080 y definiendo un conector SSL en el 8443 del Tomcat por ejemplo (y con esto tendrías conexiones seguras para webdav en el punto 3). Por otro lado, con respecto al CIFS, creo que no hace falta que modifiques el file-server.properties, con cif.enabled=false en alfresco-authentication.properties vale. De hecho, es mejor que sólo modifiques el alfresco-authentication.properties (modificar solo en el directorio de extensiones).

3. Puedes obviar el apache + mod_jk por delante, securizado el Tomcat, o en una config con un apache delante hacer un proxy http al 8443 seguro. Por otro lado el webdav es al fin y al cabo un servlet y debería funcionar con el ajp13. Nota que uso el condicional.

vlopez
Champ in-the-making
Champ in-the-making
Saludos cesarista.

Muchas gracias por tu respuesta.
Probé lo de anular el conector al puerto 8080 del Tomcat (server.xml), activando el ajp13. Pero Tomcat no tiraba.
Sobre lo de securizar Tomcat te comento que al final me decidí por utilizar Apache en función de todos los fors que visité, ya que dan tanto razones de rendimiento como de seguridad. No obstante me servirán tus indicaciones sobre la anulación de la interfaz CIFS, puesto que la habilitación de la misma aparece en varios ficheros y me tenía confundido.

De nuevo gracias.

cesarista
World-Class Innovator
World-Class Innovator
Saludos cesarista.

Muchas gracias por tu respuesta.
Probé lo de anular el conector al puerto 8080 del Tomcat (server.xml), activando el ajp13. Pero Tomcat no tiraba.
De nuevo gracias.

No me queda claro de tu mensaje si el servidor Tomcat del Alfresco no arrancaba al cambiarle los conectores, o es la configuración del apache posterior con mod_jk. Es decir, ademas hay que mapear desde el apache con el mod_jk, al 8009 de alfresco. Y conectarse a la url configurada del apache.

Sobre lo de securizar Tomcat te comento que al final me decidí por utilizar Apache en función de todos los fors que visité, ya que dan tanto razones de rendimiento como de seguridad.

Bueno, lo normal es poner un apache delante en una estructura en 3 capas, porque la capa de la aplicación no esta expuesta directamente al usuario web. Ademas puedes poner un firewall entre la capa web (la del apache) y el contenedor de servlets/servidor de aplicaciones (capa aplicación). Eso si, securizas sólo la conexión con el apache, no la conexión desde la capa web a la capa de la aplicación. En cuanto a lo del rendimiento, puede ser sobre todo si usas conexiones seguras en un caso en el apache y otro caso en el tomcat, pero poner un apache por delante suele ser mas lento que no ponerlo.

vlopez
Champ in-the-making
Champ in-the-making
Saludos Cesarista.

Previo al cambio de conectores, podía acceder a Alfresco tanto a través del puerto 80 como del 8080. Al cambiar los conectores no arrancaba Tomcat.
No se si sobre lo de mapear te refieres a la configuración necesaria con el archivo workers.properties y las directivas a incluir en el hhtp.conf.

Sobre lo de la estructura en tres capas, es la solución ideal, no obstante para las funciones a desempeñar por el servidor objetivo no utilizaré esta estructura, todos se ejecutará en una misma máquina, intentando securizar la misma mediante enjaulamientos, reglas de cortafuegos en la propia máquina, etc.

cesarista
World-Class Innovator
World-Class Innovator
Hola tini:

Saludos Cesarista.

Previo al cambio de conectores, podía acceder a Alfresco tanto a través del puerto 80 como del 8080. Al cambiar los conectores no arrancaba Tomcat.
No se si sobre lo de mapear te refieres a la configuración necesaria con el archivo workers.properties y las directivas a incluir en el hhtp.conf.

Si, hay que configurar los saltos en los workers del mod_jk.

Aqui hay una guía en inglés con los archivos de configuración:

http://forums.alfresco.com/en/viewtopic.php?f=9&t=20310

Lo puedes hacer con mod_jk o incluso con mod_proxy (con un proxy ajp13).

Por otro lado, si hay partes de Alfresco o scripts donde se hardcodea la url con el puerto 8080 y lo has desactivado en el Tomcat puede que vaya mal sólo por ajp13.

Un saludo.

–C.

vlopez
Champ in-the-making
Champ in-the-making
Por otro lado, si hay partes de Alfresco o scripts donde se hardcodea la url con el puerto 8080 y lo has desactivado en el Tomcat puede que vaya mal sólo por ajp13.

En los ficheros de configuración de Alfresco (por ejemplo file-server.xml), aparece el puerto 8080, pero el problema no es que vaya mal por ajp13, sino que no arranca.
Pero ahora que me dices esto, probaré a cambiar los puertos en este fichero a ver que pasa.

Y ya que estamos… :wink: , me permito una pregunta en referencia a esto:
Lo puedes hacer con mod_jk o incluso con mod_proxy (con un proxy ajp13).

Yo lo he montado con mod_jk, ¿Qué ventaja habría en el caso de usar mod_proxy?…

cesarista
World-Class Innovator
World-Class Innovator
Hola tini:

En los ficheros de configuración de Alfresco (por ejemplo file-server.xml), aparece el puerto 8080, pero el problema no es que vaya mal por ajp13, sino que no arranca.
Pero ahora que me dices esto, probaré a cambiar los puertos en este fichero a ver que pasa.

No me refería a eso exactamente, las urls en ese fichero son para el CIFS, pero está claro que si desactivas el conector en el 8080, todo lo que tira del las url al 8080 no va. De hecho no se tiene que levantar el puerto. Prueba a poner de nuevo el conector en el 8080 y seguir el enlace anterior.

Yo lo he montado con mod_jk, ¿Qué ventaja habría en el caso de usar mod_proxy?…

No demasiadas, con mod_jk defines los puntos de salto entre el apache y el tomcat, y en la url que le llega al apache tienes siempre el contexto de la aplicación, en este caso alfresco. Es decir, siempre tienes algo del estilo http://miservidor/alfresco pero con mod_proxy_ajp puedes hacer que sea otro nombre http://miservidor/ecm o incluso que atienda a http://miservidor. De rendimiento, parecidos.

vlopez
Champ in-the-making
Champ in-the-making
Gracias Cesarista.
Una vez lo tenga montado completo, con SSL y certificados, comentaré aquí mismo.

vlopez
Champ in-the-making
Champ in-the-making
Para impedir el acceso por el puerto 8080, creo que he encontrado la solución, por lo menos a mi me funciona:
Hay que realizar los siguientes pasos:

1.- En el archivo server.xml de tomcat:
Comentamos las siguientes líneas:
<!–
    <Connector port="8080" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true" />
    –>
Las líneas siguientes deben estar descomentadas si ya nos funcionó Alfresco con acceso a través de Apache:

<!– Define an AJP 1.3 Connector on port 8009 –>
    <Connector port="8009"
               enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />

2.- Buscamos los siguientes archivos en la ruta:/usr/local/tomcat/webapps/alfresco/WEB-INF/classes
(YA ya se que aquí no hay que tocar, pero si alguién sabe como sustutir el tocar en esta ruta que lo
apunte en este post)
:mrgreen:
En los archivos que menciono a continuación buscaremos cualquier línea donde ponga 8080. En principio
serán dos líneas por cada archivo, y sustituimos el 8080 por 8009.
Los archivos son:
- repository.properties
- file-servers.xml


Y listo, al arrancar Alfresco no es posible acceder a él a través del 8080, solo a través del 80, y sin
necesidad de habilitar reglas de cortafuegos. No obstante, el cortafuegos siempre es bueno.