Tomcat
Descripción
Apache Tomcat is an open source software implementation of the Java Servlet and JavaServer Pages technologies. The Java Servlet and JavaServer Pages specifications are developed under the Java Community Process.
Prerequistos
Sistema operativo y el backend de Java que usualmente se instala como dependencia de los paquetes.
Procedimiento
Instale los paquetes necesarios tomcat y sus plugins incluido java:
- En Debian son: tomcat7, tomcat7-common, tomcat7-admin, tomcat7-docs, tomcat7-examples, tomcat7-user
Una vez instalados verifique que Tomcat esta corriendo http://localhost:8080
Configuración
En principio no debe hacer muchas cosas mas. En la pagina de entrada puede ver los documentos, los ejemplos y ya tiene un tomcat andando.
A. Ingreso a las paginas de Administracion
En el directorio /etc/tomcat/ el archivo tomcat-users.xml
<role rolename="admin"/> <user username="tomcat" password="tomcat" roles="tomcat"/> <user username="admin" password="admin" roles="admin,manager"/>
Y con esto puede entrar a la administracion
Configuraciones Especiales
B. Soporte HTTP sobre SSL (HTTPS)
Configuracion Tomcat para acceder a las aplicaciones web via HTTP sobre SSL
Requisitos:
Tomcat
OpenSSL (Opcional)
JDK
Configuracion de tomcat
- Certificado autofirmado openssl:
En el archivo server.xml descomentar ya agregar, segun corresponda:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="/usr/share/tomcat6/.keystore" keystorePass="passwdroot" keystoreType="PKCS12" />
Generacion de una autoridad de certificacion:
openssl genrsa -out ca.key 4096openssl req -new -x509 -days 3652 -key ca.key -out ca.crt
Generacion del certificado de Tomcat:
openssl genrsa -out tomcat.key 4096openssl req -new -key tomcat.key -out tomcat.csropenssl x509 -req -days 3600 -in tomcat.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out tomcat.crt
Exportelo en formato PKCS12:
openssl pkcs12 -export -in tomcat.crt -inkey tomcat.key -out /usr/share/tomcat6/.keystore -name tomcat -CAfile ca.crt -caname root -chain -passout pass:passwdroot
- Certificado autofirmado generado por keytool:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="/usr/share/tomcat6/.keystorejava" keystorePass="passwdroot" />
Generar el par de claves para Tomcat, usando keytool. Es importante recordar que el CN de Tomcat debe ser el nombre DNS del servidor en el que se ejecute.
keytool -genkey -alias tomcat -keyalg RSA -keystore /usr/share/tomcat6/.keystorejava
Asigne password: passwdroot (Mismo que en server.xml)
- Finalmente correr pruebas de acceso SSL
Certificado cliente
Con esto solo se pueden conectar los clientes que tengan certificado valido.
Edite el server.xml:
clientAuth="true" protocol="TLS"
B. Autenticacion de usuarios contra OpenLDAP
**Configuracion de tomcat
**
Edite el archivo server.xml, agregue el Realm para LDAP
<!-- Configuracion LDAP Tomcat --> <Realm className="org.apache.catalina.realm.JNDIRealm" connectionURL="ldap://192.168.8.217:389" userPattern="uid={0},ou=People,o=skinatech,dc=ikatta,dc=com" roleBase="ou=Groups,o=skinatech,dc=ikatta,dc=com" roleName="cn" roleSearch="memberuid={1}"/>
**Configuracion de la aplicacion
**Edite el archivo $CATALINA_HOME/webapps/<su aplicacion>/WEB-INF/web.xml, y agregue:
<security-constraint> <display-name>Security Constraint</display-name> <web-resource-collection> <web-resource-name>Protected Area</web-resource-name> <!-- Define the context-relative URL(s) to be protected --> <url-pattern>/*</url-pattern> <!-- If you list http methods, only those methods are protected --> </web-resource-collection> <auth-constraint> <!-- Anyone with one of the listed roles may access this area --> <role-name>source</role-name> </auth-constraint></security-constraint><!-- Default login configuration uses form-based authentication --><login-config> <auth-method>FORM</auth-method> <realm-name>Form-Based Authentication Area</realm-name> <form-login-config> <form-login-page>/security/protected/index.jsp</form-login-page> <form-error-page>/security/protected/error.jsp</form-error-page> </form-login-config></login-config><!-- Security roles referenced by this web application --><security-role> <role-name>source</role-name></security-role>
Cree los formularios login.jsp y error.jsp y coloquelos en el directorio especificado en el web.xml, se adjunta un ejemplo del formulario login.jsp
<form method="POST" action='<%= response.encodeURL("j_security_check") %>' >
<table cellpadding="2" border="0" cellspacing="0">
<tr>
<td align="right">Username:</td>
<td align="left"><input type="text" name="j_username" size="9"></td>
</tr>
<tr>
<td align="right">Password:</td>
<td align="left"><input type="password" name="j_password" size="9"></td>
</tr>
<tr>
<td align="right"><input type="submit" value="Log In"></td>
<td align="left"><input type="reset"></td>
</tr>
</table>
</form>
Reinicie servicio y voilà.
NOTA: Recuerde que los usuarios del Realm UserDatabase se sobreescriben por los del LDAP, es necesario crear en el LDAP usuarios con roles “manager” y “admin”
C. Autenticacion de usuarios contra Active Directory
**Configuracion de tomcat
**
Edite el archivo server.xml, agregue el Realm para LDAP
<!-- Configuracion AD - Tomcat --><Realm className="org.apache.catalina.realm.JNDIRealm" connectionName="central\\Invitado" connectionPassword="Concolsa05" connectionURL="ldap://172.17.17.28:389" alternateURL="ldap://172.17.17.29:389" referrals="follow" userBase="OU=Usuarios del Dominio,DC=central,DC=concol,DC=com" userSearch="(sAMAccountName={0})" roleBase="OU=Geomatica,OU=Usuarios del Dominio,DC=central,DC=concol,DC=com" roleName="name" roleSearch="(member={0})" roleSubtree="true" userSubtree="true" />
Configuracion de la aplicacion
**Edite el archivo $CATALINA_HOME/webapps/<su aplicacion>/WEB-INF/web.xml, y agregue:
Reinicie servicio y voilà.
**NOTA: Recuerde que los usuarios del Realm UserDatabase se sobreescriben por los del LDAP, es necesario crear en el LDAP usuarios con roles “manager” y “admin”
Otras Labores
A. Pruebas de Stress
B. Diagnostico de problemas
PSI Probe
PSI Probe is a community-driven fork of Lambda Probe distributed under the same open-source license (GPLv2). It is intended to replace and extend Tomcat Manager, making it easier to manage and monitor an instance of Apache Tomcat.
Unlike many other server monitoring tools, PSI Probe does not require any changes to your existing apps. It provides all of its features through a web-accessible interface that becomes available simply by deploying it to your server. These features include:
Requests: Monitor traffic in real-time, even on a per-application basis.
Sessions: Browse/search attributes, view last IP, expire, estimate size.
JSP: Browse, view source, compile.
Data Sources: View pool usage, execute queries.
Logs: View contents, download, change levels at runtime.
Threads: View execution stack, kill.
Connectors: Status, usage charts.
Cluster: Status, usage charts.
JVM: Memory usage charts, advise GC
Java Service Wrapper: Restart JVM.
System: CPU usage, memory usage, swap file usage.
Configuración
Agregue los roles necesarios para la aplicacion:
PSI Probe requiere cuatro roles de seguridad (en orden ascendente de privilegios):
probeuser
poweruser
poweruserplus
manager (Este es el mismo rol requerido por el Tomcat Manager y es el de mas altos privilegios)
NOTA: En Tomcat 7 (o Tomcat 6.0.30 en adelant), ud puede requerir usar manager-gui en lugar de manager.
En el archivo /etc/tomcat6/tomcat-users.xml, agregue
<tomcat-users> ... <role rolename="probeuser" /> <role rolename="poweruser" /> <role rolename="poweruserplus" /> <role rolename="manager" /> ...</tomcat-users>
NOTA: Si esta conectado por medio a JNDIRealm es necesario que los cree en el servidor de directorio y no hay necesidad de reiniciar el servicio.
PSI probe requiere que se habilite la opcion de JMXRemote
Agregue al archivo /etc/tomcat6/tomcat6.conf
CATALINA_OPTS="-Dcom.sun.management.jmxremote=true"
Descargue la aplicacion y realice el deployment manual:
/etc/init.d/tomcat6 stopcp probe.war /usr/share/tomcat6/webapps/etc/init.d/tomcat6 start
Corra la palicacion desde el servidor web: localhost:8080/probe y logueese con el usuario manager.
Problemas
1. Tomcat utiliza el 100% de la CPU
En algunas versiones de Tomcat hay un problema con el conector AJP, es necesatio modificar en el archivo de configuracion y agregar un timeout, tal cual se explica:
<Connector port=”8009″enableLookups=”false” redirectPort=”8443″ protocol=”AJP/1.3″connectionTimeout=”5000″/>
Se reinicia el servicio y voilà!!
Referencia
-http://sebthom.de/142-installing-tomcat-6-debian-squeeze/ –
- http://www.ubuntugeek.com/how-to-install-tomcat-6-on-ubuntu-9-04-jaunty.html –
- http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html
- http://tomcat.apache.org/tomcat-6.0-doc/realm-howto.html
- https://code.google.com/p/psi-probe/
FIN
==============================================================
Anexos
==============================================================
skina.conf
==============================================================
############### Reglas adicionales por SkinaTech
-
FIN
16-Mayo-2012 J.C. Pineros C: v1.4 Monitoreo Tomcat con PSI Probe
09-Mayo-2012 J.C. Pineros C: v1.3 Tomcat con AD
03-Mayo-2012 J.C. Pineros C: v1.2 Tomcat sobre SSL y Tomcat con LDAP
11-Abril-2012 J.C. Pineros C: v1.1 Tomcat 100% CPU
15-Marzo-2006 J.E.Gomez v1.0 Primera version
Advertencia
Este documento es privado y es de u so exclusivo de sus autores y de SKINA TECH. Cualquier uso sin una autorización escrita es contra la ley de derechos de autor y de propiedad intelectual, y será motivo de una acción legal.