1. Prerequisitos
1. Descargar el OpenJDK (15 ó 17 segun version de tomcat) desde el repositorio
2. Descomprimir el fichero zip o tar segun disponibilidad en una carpeta como MisProgramas
3. Descargamos el fichero "zip" de la versión 9 desde el repositorio de Tomcat.
4. Descomprimimos el fichero en una carpeta como MisProgramas
2. Crear archivo setenv.sh (carpeta bin)
- La ruta de JAVA (En Tomcat 10, se prefiere Java 17 o superior!)
- Los parámetros de memória etc
3. Ajustar archivos de configuración
1. tomcat-users.xml (carpeta conf)
Hay que activar al menos el usuario tomcat con al menos el rol "manager-gui"
<role rolename="tomcat"/> <role rolename="manager-gui"/>
<user username="tomcat" password="mypassword" roles="tomcat,manager-gui"/>
2. context.xml (carpetas :conf, webapps/aplicacion(1..n)/META-INF)
Ojo, para cada aplicación descargada en la carpeta webapps, dentro de la subcarpeta específica META-INF hay un fichero context.xml que define las IPs de acceso a cada aplicación. Por tanto si queremos accedert a manager y host-manager hay que comentar la etiqueta <Valve .../>
<Context antiResourceLocking="false" privileged="true" >
<!--<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />-->
</Context>Otra opción mejor es añadir la IP de la máquina que queremos que pueda entrar en la aplicacion. Por ejemplo para que esta IP 192.168.0.1 pueda entrar quedaría
<Context antiResourceLocking="false" privileged="true" >
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="192.168.0.1|127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
</Context>3. server.xml (carpeta conf)
Si queremos activar el protocolo "https", debemos conseguir un certificado y actuar como se indica en una entrada anterior o si se utiliza LetsEncrypt, esta otra.
Para poder crear puertos adicionales como el 8081 basta con crear otra entrada como esta
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />En cambio para habilitar el puerto 80 .. puede haber problemas.
Introducir en el navegador de otra máquina http//:IP_Servidor:80 (siendo IP_Servidor la IP de la máquina donde hemos instalado el Tomcat) a ver si no nos niega el acceso.
Si nos niega el acceso, hay que borrar los cookies (galletas, galetes ..) del navegador y volver a probar. Pero para salir de dudas de los navegadores, lo mejor es ejecutar en el servidor local por línea de comandos:
curl http://localhost:80Si sale una ratahila de código html, estamos de suerte. Si por el contrario hay un error, muestra un código parecido
curl: (7) Failed to connect to localhost port 80: Connection refusedA continuación se prueba desde otra máquina a ver si va (puede haber problemass con el fichero context.xml, que lo hemos visto en el punto anterior y su posible solución en la etiqueta <Valve.../>) Probamos desde otra máquina con línea de comandos
curl http://IP_Servidor:804. Si no hay manera de arrancar el puerto 80
/etc/apache2/ ├── conf-available ├── conf-enabled ├── mods-available ├── mods-enabled ├── sites-available └── sites-enabled
Para ello ejecutamos estos comando para devolver el fichero de apache2.conf a su estado inicial.
sudo apt-get purge apache2 sudo apt-get install apache2
Se rearranca el tomcat y mejor si reaarancamos el servidor y verificar que tomcat esté corriendo con
ps -ef | grep tomcaty si el servicio está arrancado, pproprobamos con
curl http://localhost:80a ver si va. Si no va, hasta aquí llego!
5. Configurar https
5.1 Definir el dominio.
Consultar esta web para ver como se configura ssh con certificados ".pem "(p12)
Veamos 2 ejemplos de configuración de certificados (uno para el puerto 8443 y el otro para el 19443) Se ha copiado del 2ª enlace
5.2a con certificado jks (tomcat 10)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <!-- Define a SSL HTTP/1.1 Connector on port 8443 This connector uses the JSSE configuration, when using APR, the connector should be using the OpenSSL style configuration described in the APR documentation --> <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" <!-- true to read client certificate --> sslProtocol="TLS" <!--"TLSv1.2" --> keyAlias="tomcat" keystoreFile="/home/ximo/mykeystore.jks" keystorePass="mypassword" /> |
<!-- Define a SSL HTTP/1.1 Connector on port 8443 This connector uses the JSSE configuration, when using APR, the connector should be using the OpenSSL style configuration described in the APR documentation --> <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true" maxThreads="150" <SSLHostConfig certificateVerification="require"> <Certificate certificateKeyAlias="tomcat"
|
NOTA 1: Conversión de p12 a JKS
NOTA 2: Contraseñas con caracteres NO ASCII
keystorePass="mypasswordÑ.á.ñ.fin" FALLA!!!
keystorePass="mypasswordÑ.á.ñ.fin" 5.2b con certificado pem
- cert.pem (certificado "solo")
- chain.pem (cadena de certificados del root)
- fullchain.pem (certificado "solo" + cadena de certificados del root. Equivale a los 2 ficheros anteriores juntos)
- privkey.pem (clave privada)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <Connector port="19443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" sslProtocol="TLS" clientAuth="true" keyAlias="tomcat" SSLCertificateFile="/etc/letsencrypt/live/midominio.es/cert.pem" SSLCertificateChainFile="/etc/letsencrypt/live/midominio.es/chain.pem" SSLCertificateKeyFile="/etc/letsencrypt/live/midominio.es/privkey.pem" /> |
<!-- Define a SSL HTTP/1.1 Connector on port 8443 This connector uses the JSSE configuration, when using APR, the connector should be using the OpenSSL style configuration described in the APR documentation --> <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true" maxThreads="150"> <SSLHostConfig certificateVerification="require"> <Certificate certificateFile="/etc/letsencrypt/live/midominio.es/cert.pem" certificateChainFile="/etc/letsencrypt/live/midominio.es/chain.pem" certificateKeyFile="/etc/letsencrypt/live/midominio.es/privkey.pem" type="RSA" /> </SSLHostConfig> </Connector> |
- No nos ha hecho falta el fullchain.pem
- Tampoco nos ha hecho falta ninguna contraseña
- Estamos trabajando en un puerto https adicional 19443 (junto con el anterior 8443) sin ningún problema
No hay comentarios :
Publicar un comentario