Tomcat

De Ardemans Wiki
Revisión a fecha de 17:51 22 ago 2011; 194.169.201.2 (Discusión)

(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar

Redirección de aplicacion a SSL

Para hacer que una aplicación haga redirección y vaya siempre por el puerto SSL se puede hacer modificando la configuración de la aplicación.

Editamos el fichero $CATALINA_HOME/webapps/<aplicacion>/WEB-INF/web.xml y añadimos lo siguiente:

<security-constraint>
<web-resource-collection>
<web-resource-name>Entire Application</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint> 

Esto lo añadimos al final del fichero pero siempre dentro del tag <web-app>


Importar certificado con llave privada

Uno de los problemas que tuve fue al importar el certificado de mi entidad de windows al keystorage de java. Resulta que la utilidad keytool de java no importa certificados con llave privada, por lo tanto hay que hacer un truco para poder importarlo.

Por un lado hemos de tener tanto el fichero del certificado como el fichero de la llave privada

Después podemos usar el openssl para genera un fichero pkcs12 que incluye tanto el certificado como la llave privada.

En mi caso, mi fichero de certificado se llama sfocalp01.cer y el de clave privada es sfocalp01.key

openssl pkcs12 -export -in sfocalp01.cer -inkey sfocalp01.key -out sfocalp01.p12 -name tomcat -CAfile cacert.cer

Es importante poner una contraseña que pide, ya que la utilidad keytool de java tambien falla si no tiene contraseña.

Despues usaremos el keytool:

/usr/local/java/bin/keytool -importkeystore -deststorepass <<contraseña>> -destkeypass <<contraseña>> -destkeystore keystore.jks -srckeystore sfocalp01.p12 -srcstoretype PKCS12 -srcstorepass <<contraseña>> -alias tomcat

con eso ya tenemos un fichero que se llama keystore.jks que podemos usar en nuestra configuracion de tomcat. Modificamos el server.xml:

    <Connector port="8443" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" disableUploadTimeout="true"
               acceptCount="100" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" SSLEnabled="true"
                keystoreFile='/root/keystore.jks' keystorePass='<<contraseña>>'/>