wiki:ins_tomcat_servidor_ssl

Version 12 (modified by pbuitrago, 5 years ago) (diff)

--

Instalación del servidor Apache Tomcat 7 en un servidor de prueba (Debian 9) e instalar y configurar un certificado ssl (https://)


Notas:

  • Este manual fue probado en GNU/Linux Debian 9 Stretch de 64bits
  • Usaremos $ para describir los comandos que se usaran con usuario regular.
  • Usaremos # para describir los comandos que se usaran con superusuario.

Instalación del servidor Apache Tomcat 7 en un servidor de prueba (Debian 9)

1.- Se procede a descargar el servidor Apache Tomcat desde https://tomcat.apache.org/download-70.cgi. Entre los paquetes que se encuentra, para este manual de descargo https://www-us.apache.org/dist/tomcat/tomcat-7/v7.0.92/bin/apache-tomcat-7.0.92.tar.gz. También lo puede descargar desde el siguiente enlace https://tibisay.cenditel.gob.ve/murachi/raw-attachment/wiki/ins_tomcat_ide_eclipse/apache-tomcat-7.0.92.tar.gz

2.- Una ves descargado el archivo apache-tomcat-7.0.92.tar.gz se procedió a mover dicho archivo al directorio /var/lib/

#mv apache-tomcat-7.0.92.tar.gz /var/lib/

3.- Se procede a descomprimir el archivo y cambiar el nombre del directorio a tomcat7

# tar -xzvf apache-tomcat-7.0.92.tar.gz
# mv apache-tomcat-7.0.92 tomcat7 

Entonces /var/lib/tomcat7 -> están los fuentes del servidor

Estructura de directorios La jerarquía de directorios de instalación de Tomcat incluye:

  • bin - arranque, cierre, y otros scripts y ejecutables.
  • common - clases comunes que pueden utilizar Catalina y las aplicaciones web.
  • conf - ficheros XML y los correspondientes DTD para la configuración de Tomcat.
  • logs - logs de Catalina y de las aplicaciones.
  • server - clases utilizadas solamente por Catalina.
  • shared - clases compartidas por todas las aplicaciones web.
  • webapps - directorio que contiene las aplicaciones web.
  • work - almacenamiento temporal de ficheros y directorios.

4.- Para correr el Tomcat procede acceder hasta el directorio /var/lib/tomcat7/bin/ y ejecutar el archivo catalina.sh

root@debian9:/var/lib/tomcat7/bin# ./catalina.sh start
Using CATALINA_BASE:   /var/lib/tomcat7
Using CATALINA_HOME:   /var/lib/tomcat7
Using CATALINA_TMPDIR: /var/lib/tomcat7/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /var/lib/tomcat7/bin/bootstrap.jar:/var/lib/tomcat7/bin/tomcat-juli.jar
Tomcat started.

5.- y Finalmente se levanta el navegador de su preferencia y coloca la ruta http://localhost:8080 (ver figura 1)

Figura 1. Interfaz gráfica del servidor Apache Tomcat

En la interfaz podemos observar tres botones:

  • "Server Status" -> (Estado del servidor)
  • "Manager App" -> (Aplicación de administrador )
  • "Host Manager" -> (gerente de host)

Para acceder a cualquiera de estas instancia esta restringida por unos usuarios que se debe configurar en $CATALINA_HOME/conf/tomcat-user.xml donde la variable $CATALINA_HOME se refiere al directorio base en la cual se resuelve la mayoría de las rutas relativas. si no se ha configura Tomcat el directorio base, entonces $CATALINA_BASE se establecerá con el valor donde esta instalado el Tomcat. para nuestro caso $CATALINA_HOME = /var/lib/tomcat7

Dentro del archivo tomcat-user.xml se puede encontrar los siguientes roles:

  • manager-gui -> Acceso a la interfaz HTML
  • manager-status -> Acceso a la pagina Estado del servidor
  • manager-script
  • manager-jmx

Para nuestro caso solo vamos a utilizar o definir los roles manager-gui y manager-status y para la misma procedemos agregar dentro del archivo tomcat-user.xml

/var/lib/tomcat7# vim tomcat-user.xml

Donde vamos agregar la siguiente sección:

<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="tomcat" password="s3cret" roles="manager-gui"/>
<user username="admin" password="s3cret" roles="admin-gui"/>
</tomcat-users>

Guardamos, reiniciamos el servidor tomcat 7. (lo paramos -> ./catalina.sh stop e iniciamos de nuevo -> ./catalina.sh start )

root@debian9:/var/lib/tomcat7/bin# ./catalina.sh stop
Using CATALINA_BASE:   /var/lib/tomcat7
Using CATALINA_HOME:   /var/lib/tomcat7
Using CATALINA_TMPDIR: /var/lib/tomcat7/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /var/lib/tomcat7/bin/bootstrap.jar:/var/lib/tomcat7/bin/tomcat-juli.jar

root@debian9:/var/lib/tomcat7/bin# ./catalina.sh start
Using CATALINA_BASE:   /var/lib/tomcat7
Using CATALINA_HOME:   /var/lib/tomcat7
Using CATALINA_TMPDIR: /var/lib/tomcat7/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /var/lib/tomcat7/bin/bootstrap.jar:/var/lib/tomcat7/bin/tomcat-juli.jar
Tomcat started.

finalmente procedemos a probar los roles en la pagina httplocalhost:8080 haciendo clic en el botón "Manager App"

Figura 2. Interfaz gráfica autenticación para acceder a Server Status

Introducimos el usuario y contraseña asignada en el archivo tomcat-user.xml

Figura 3. Interfaz gráfica del Server Status

Hasta este instante se tiene corriendo el servidor Apache Tomcat 7 (que es un contenedor de aplicaciones web) y se configuro los usuarios para acceder a las diferentes secciones. Ahora procederemos a mostrar los pasos para correr una aplicación web en el contenedor Apache tomcat 7, para la misma debemos de disponer un archivo de aplicación web (.war) (Nota: WAR es un archivo JAR utilizado para distribuir una colección de JavaServer? Pages, servlets, clases Java, archivos XML, bibliotecas de tags y páginas web estáticas (HTML y archivos relacionados) que juntos constituyen una aplicación web. ) -> https://es.wikipedia.org/wiki/WAR_(archivo)

Para este manual vamos a correr el servidor Murachí que se dispone del archivo .war en el siguiente enlace Murachi.war

Para subir un .war al servidor se puede realizar de dos maneras.

1.- Se puede realizar desde un terminal y accediendo al directorio $CATALINA_HOME/webapps/ para este paso se descargar el archivo Murachi.war al HOME del servidor y luego se mueve el archivo al directorio $CATALINA_HOME/webapps/

$HOME# mv Murachi.war $CATALINA_HOME/webapps/

2.- Usando la interfaz gráfica del servidor Tomcat sección Manager App o desde la sección Server Status (ver figura 3) hacer clic en la sección Listar Aplicaciones y bajar hasta la sección Archivo WAR a desplegar (ver figura 4)

Figura 4. Sección Archivo WAR a desplegar

hacemos clic en el botón Seleccionar archivo luego de seleccionar el archivo Murachi.war hacemos clic en el botón Desplegar (ver figura 5)

Figura 5. Selección del archivo Murachi.war a desplegar

Una ves cargado y desplegado en archivo Murachi.war podemos observar en la sección Aplicaciones donde se visualizan las aplicaciones que estan contenida en el servidor Tomcat que ya aparece la aplicación Murachi (ver figura 6)

Figura 6. Sección Aplicaciones - lista de aplicaciones en Tomcat

Para poder correr el servicio de Murachí vamos a requerir

1.- Crear un directorio con el nombre de murachiWorkingDirectory en el servidor Tomcat en la dirección $CATALINA_HOME/ donde se almacenara los archivos que se van a firmar. para la misma debemos ejecutar los siguientes pasos:

$CATALINA_HOME/# mkdir murachiWorkingDirectory

2.-Instalar y configurar un certificado SSL en el servidor tomcat ya que el servicio de murachi requiere el uso del protocolo HTPPS

Para la misma vamos a mostrar los pasos para realizar la instalación y configuración del certificado:

Instalación y configuración de un certificado digital al servidor Tomcat (ssl)


fuente de: https://unpocodejava.com/2016/04/29/como-crear-un-certificado-autofirmado-para-tomcat-y-nginx/

En esta sección se mostrara los pasos para crear un certificado autofirmado y configurar el servidor Tomcat.

Primero procedemos a crear el par de clave (publica y privada) del certificado autofirmado y crear el almacén de claves 'keystore' en formato JKS con el siguiente comando ## openssl req -x509 -sha256 -newkey rsa:2048 -keyout tomcat.key -out tomcat.crt -days 1024 -nodes

donde indicamos crear una solicitud (crt) de certificado x509, usar algoritmo sha256 crear claves (key) con tamaño 2048 y la salida seria los archivos tomcat.key y tomcar.crt

root@debian9:/var/lib/tomcat7# openssl req -x509 -sha256 -newkey rsa:2048 -keyout tomcat.key -out tomcat.crt -days 1024 -nodes
Generating a RSA private key
...........+++++
.....................+++++
writing new private key to 'tomcat.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:VE
State or Province Name (full name) [Some-State]:Merida
Locality Name (eg, city) []:Merida
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Fundacion Cenditel
Organizational Unit Name (eg, section) []:Seguridad
Common Name (e.g. server FQDN or YOUR name) []:Murachi
Email Address []:seguridad@cenditel.gob.ve
root@debian9:/var/lib/tomcat7#  

En el paso anterior pueden colocar los datos de pruebas que quieran, estos datos estaria dentro de la solicitud del certificado.

Ahora procedemos a exportar ambos archivos que se generaron en la sección anterior (tomcat.crt y tomcat.key) al almacén de claves keystore

## openssl pkcs12 -export -out keystore.pkcs12 -in tomcat.crt -inkey tomcat.key

root@debian9:/var/lib/tomcat7# openssl pkcs12 -export -out keystore.pkcs12 -in tomcat.crt -inkey tomcat.key
Enter Export Password:
Verifying - Enter Export Password:
root@debian9:/var/lib/tomcat7#

Escriba el siguiente comando para instalar el archivo de certificado en el almacén de claves: ## keytool -importkeystore -srckeystore keystore.pkcs12 -srcstoretype PKCS12 -destkeystore keystore.jks -deststoretype JKS

Configuración del Conector SSL

En primer lugar, Tomcat necesitará un conector SSL configurado para poder aceptar las conexiones seguras.

Abra el archivo server.xml de Tomcat ($CATALINA_HOME/conf/) en un editor de texto.

root@debian9:/var/lib/tomcat7/conf# vim server.xml

Busque el conector que desea proteger con el nuevo almacén de claves y, si es necesario, elimine el comentario (generalmente, se trata de un conector con el puerto 443 o 8443 como se muestra en el ejemplo siguiente). Especifique el nombre de archivo y la contraseña correctos del almacén de claves en la configuración del conector. Cuando finalice, el conector debe tener una apariencia similar al siguiente ejemplo:

 <!-- Define a SSL HTTP/1.1 Connector on port 8443
     This connector uses the BIO implementation that requires the JSSE
     style configuration. When using the APR/native implementation, the
     OpenSSL style configuration is required as described in the APR/native
     documentation -->

    <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
     maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
     clientAuth="false" sslProtocol="TLS" 
     keystoreFile="/var/lib/tomcat7/keystore.jks" keystorePass="123456"
    />

Guarde los cambios en el archivo server.xml y se procede a reinicie Tomcat. Para verificar el funcionamiento del certificado ssl se procede a levantar un navegador de su preferencia y vuelva a levantar el servidor pero agregando el protocolo https (https://localhost:8443/) (ver figura 7)

Figura 6. Servidor Tomcat usando el protocolo https

Consumo del servido Murachí

Para poder realizar el consumo de los servicios de Murachí debemos cargar un portal que realiza las consultas para verificar y firmar electrónicamente documentos usando el formato pdf como bdoc.

El portal se tiene disponible en formato .war -> Descargar, solo queda realizar el proceso de cargar y desplegar en el servidor Tomcat, para la misma debemos realizar los pasos de la sección anterior Para subir un .war al servidor se puede realizar de dos maneras. . En esta caso se mostrara el cargar y desplegar el archivo usando la opción del interfaz gráfica (ver figura 8)

Figura 8. Cargar y desplegar el portal para consumir el servicio de Murachi

Podemos observar en la lista de aplicaciones del Tomcat que ya se dispone del portal (pruebaservicioweb) (ver figura 9)

Figura 9. Tomcat -> Lista de aplicaciones '''pruebaservicioweb'''

Procedemos a ejecutar el portal (pruebaservicioweb) haciendo clic en el enlace /pruebaservicioweb y se desplegara el portal que realizar el consumo del servicio de Murachí (ver figura 10)

Figura 10. Tomcat -> Portal para consumir el servicio de Murachí

Si probamos este portal vamos a consumir el servicio del Murachí en producción y no el que tenemos en el servidor de prueba, en este sentido procedemos a cambiar en el método $.ajax la propieda url la dirección de la petición que apunte al servidor de prueba. Entonces para realizar estos pasos debemos acceder al directorio CATALINA_HOME/webapps/pruebaservicioweb/ y editamos el archivo index.html

# cd CATALINA_HOME/webapps/pruebaservicioweb/

Con el editor de su preferencia proceda a modificar en todos los método de $.ajax la propiedad url

Ejemplo: comento la linea url:"https://murachi.cenditel.gob.ve/Murachi/0.1/archivos" y coloco url:"https://192.168.12.91:8443/Murachi/0.1/archivos", donde 192.168.12.91 es la dirección IP de mi servidor de prueba, en tal sentido debe obtener la IP de la maquina donde esta trabajando.

$.ajax({
   url: "https://192.168.12.91:8443/Murachi/0.1/archivos",
   //url: "https://murachi.cenditel.gob.ve/Murachi/0.1/archivos",

una ves modificado todos los métodos de $.ajax proceda a guardar los cambio y ya el portal esta listo para consumir los servicio de Murachí desde su servidor de prueba.

Attachments (15)

Download all attachments as: .zip