Diferencia entre revisiones de «Tomcat»

De Ardemans Wiki
Saltar a: navegación, buscar
Línea 37: Línea 37:
 
Despues usaremos el keytool:
 
Despues usaremos el keytool:
  
[pre]
+
<pre>
 
/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
 
/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
[/pre]
+
</pre>
  
 
con eso ya tenemos un fichero que se llama keystore.jks que  podemos usar en nuestra configuracion de tomcat. Modificamos el server.xml:
 
con eso ya tenemos un fichero que se llama keystore.jks que  podemos usar en nuestra configuracion de tomcat. Modificamos el server.xml:
  
[pre]
+
<pre>
 
     <Connector port="8443" maxHttpHeaderSize="8192"
 
     <Connector port="8443" maxHttpHeaderSize="8192"
 
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
 
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
Línea 50: Línea 50:
 
               clientAuth="false" sslProtocol="TLS" SSLEnabled="true"
 
               clientAuth="false" sslProtocol="TLS" SSLEnabled="true"
 
                 keystoreFile='/root/keystore.jks' keystorePass='<<contraseña>>'/>
 
                 keystoreFile='/root/keystore.jks' keystorePass='<<contraseña>>'/>
[/pre]
+
</pre>

Revisión de 17:50 22 ago 2011

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

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

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>>'/>