View this PageEdit this PageUploads to this PageVersions of this PageHomeRecent ChangesSearchHelp Guide

Configurar el apache tomcat (java, primefaces, aplicaciones por http) para que use SSL

Se utiliza esta documentación

Ejemplo para servvent:

En servvent, como root, un certificado para 5 años (1825 días), con las etiquetas de Metro de Madrid:
/usr/bin/keytool -genkey -alias tomcat -keyalg RSA -validity 1825
¿Cuál es su nombre y apellido?
  [Desconocido]:  *.silex.metromadrid.net
¿Cuál es el nombre de su unidad organizativa?
  [Desconocido]:  SMESC
¿Cuál es el nombre de su organización?
  [Desconocido]:  METRO DE MADRID S.A.
¿Cuál es el nombre de su ciudad o localidad?
  [Desconocido]:  MADRID
¿Cuál es el nombre de su estado o provincia?
  [Desconocido]:  MADRID
¿Cuál es código de país de dos letras para esta unidad?
  [Desconocido]:  ES
¿Es CN=*.silex.metromadrid.net, OU=SMESC, O=METRO DE MADRID S.A., L=MADRID, ST=MADRID, C=ES correcto?(escriba "sí" o "no")
  [no]:  s



Y luego se deja el fichero de configuración del tomcat de esta manera:

 /usr/share/apache-tomcat-8.0.18/conf/server.xml
<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> 
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
  <GlobalNamingResources>
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>
  <Service name="Catalina">
    <Connector port="8888" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               sslImplementationName="org.apache.tomcat.util.net.jsse.JSSEImplementation"
               maxThreads="200" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" />
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
    <Engine name="Catalina" defaultHost="localhost">
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>
    </Engine>
  </Service>
</Server>


Con eso se hace que se acceda por http usando el puerto 8888 y por https usando el puerto 8443.

El certificado es self-signed, por lo que en el firefox habrá que aceptar el certificado la primera vez que te conectes al 8443.

NOTA: Hay un redir en servvent para poder acceder tanto por http como por https desde frontpci02.


NOTA2: Para obtener el fichero server.xml sin los comentarios he hecho lo siguiente:
cd /usr/share/apache-tomcat-8.0.18/conf/
cat server.xml | tr '\n' '@' | sed "s/<\!--[^>]*>//g" | tr '@' '\n' | sed "/^ *\$/d"| sed "/^ *-->\$/d"




Para Poner en servvent el certificado de metro:

cd /root
keytool -import -alias root -keystore .keystore -trustcacerts -file /root/.ssh/metromadrid2020.crt
Entre la contraseña del almacén de claves:  changeit
¿Confiar en este certificado? [no]:  sí
[root@servvent ~]# keytool -import -alias tomcat -keystore .keystore -file /root/.ssh/metromadrid2020.pem
Entre la contraseña del almacén de claves:  changeit
Ya existe el certificado en el almacén de claves bajo el alias <root>
¿Sigue deseando añadirlo? [no]:  sí
Se ha añadido el certificado al almacén de claves


Y se modifica el server.xml para que tenga
...
    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               sslImplementationName="org.apache.tomcat.util.net.jsse.JSSEImplementation"
               maxThreads="200" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" />
...