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:80
Si 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 refused
A 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:80
4. 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 tomcat
y si el servicio está arrancado, pproprobamos con
curl http://localhost:80
a 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