wiki:ins_tomcat_servidor_ssl

Inicio > Actividades en el 2019 > - Instalación de Murachí - Entorno de Pruebas


Instalación y configuración de Murachí con Apache Tomcat 7 (SSL) en Entornos de Pruebas


1. Requerimientos

  • Debian 8 y 9
  • Apache Tomcat 7.0.92
  • Default-jre
  • Default-jdk

Notas:

  • Usaremos $ para describir los comandos que se usaran con usuario regular.
  • Usaremos # para describir los comandos que se usaran con superusuario.


2. Instalación de Apache Tomcat 7

  1. Descargar el servidor Apache Tomcat desde https://tomcat.apache.org/download-70.cgi. Para el presente manual se descargó https://www-us.apache.org/dist/tomcat/tomcat-7/v7.0.92/bin/apache-tomcat-7.0.92.tar.gz. También se 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
  1. Una ves descargado el archivo apache-tomcat-7.0.92.tar.gz se debe mover el mismo al directorio /var/lib/
    # mv apache-tomcat-7.0.92.tar.gz /var/lib/
    
  1. Descomprimir el archivo y cambiar el nombre del directorio a tomcat7
    # cd /var/lib
    # 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.
  1. Para correr el Tomcat se debe acceder hasta el directorio /var/lib/tomcat7/bin/ y ejecutar el archivo catalina.sh
    # cd /var/lib/tomcat7/bin/ 
    
    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.
    
  1. 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

export 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

  1. Agregar dentro del archivo los permisos de usuarios para el Tomcat tomcat-user.xml
    # cd $CATALINA_HOME/conf
    # 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>
  1. Guardar los cambios y reiniciar el servicio tomcat 7.
    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.
    
    
  1. Finalmente se prueba los roles creados 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

  1. Se introduce 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


3. Implementación del servicio Murachí (.war)

3.1 Cargar archivo .war

Para cargar un archivo .war en Tomcat se puede realizar de dos maneras:

  1. Desde un terminal:
    1.1. Descargar el archivo Murachi.war al HOME.
    1.2. Luego se mueve el archivo al directorio $CATALINA_HOME/webapps/
    # mv Murachi.war $CATALINA_HOME/webapps/
    

  1. Usando la interfaz gráfica del servidor Tomcat:
    2.1. Ir a la sección Manager App o desde la sección Server Status (ver figura 3).
    2.2. Hacer clic en la sección Listar Aplicaciones y bajar hasta la sección Archivo WAR a desplegar (ver figura 4).
    2.3. Hacer clic en el botón Seleccionar archivo luego de seleccionar el archivo Murachi.war hacer clic en el botón Desplegar (ver figura 5).
    2.4. Una ves cargado y desplegado en archivo Murachi.war se puede observar en la sección Aplicaciones donde se visualizan las aplicaciones que están contenida en el servidor Tomcat que ya aparece la aplicación Murachi (ver figura 6).

Figura 4. Sección Archivo WAR a desplegar


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


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


3.2 Correr el servicio de Murachí

  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:
    # cd $CATALINA_HOME
    # mkdir murachiWorkingDirectory
    
  1. Instalar y configurar un certificado SSL en el servidor tomcat, ya que el servicio de Murachí requiere el uso del protocolo HTTPS: En esta sección se mostrara los pasos para crear un certificado autofirmado, crear el almacén de claves 'keystore' en formato JKS y la configuración el servidor Tomcat.

    • Crear el par de clave (publica y privada) del certificado autofirmado, donde se indica la creación de una solicitud (crt) de certificado x509, usando algoritmo sha256, la creación de claves (key) con tamaño 2048 y la salida en 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#  
      
    • Exportar ambos archivos que se generaron en la sección anterior (tomcat.crt y tomcat.key) al almacén de claves keystore
      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#
      
    • Instalar el archivo de certificado en el almacén de claves:
      # keytool -importkeystore -srckeystore keystore.pkcs12 -srcstoretype PKCS12 -destkeystore keystore.jks -deststoretype JKS
      
    • Para la configuración del Conector SSL (Tomcat necesitará un conector SSL configurado para poder aceptar las conexiones seguras) abrir el archivo server.xml de Tomcat $CATALINA_HOME/conf/ en un editor de texto.
      root@debian9:/var/lib/tomcat7/conf# vim server.xml
      
    • Buscar 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"
          />
      
      
    • Guardar 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 7. Servidor Tomcat usando el protocolo https

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


4. Implementación de un Portal WEB de pruebas para obtener la Versión del servicio Murachí

  1. Descargar el portal que se tiene disponible en formato .war -> Descargar.
  1. Ejecutar el proceso de cargar y desplegar en el servidor Tomcat, para la misma debemos realizar los pasos de la sección anterior: 3. Implementación del servicio Murachí (.war) > 3.1 Cargar archivo .war

Figura 8. Tomcat -> Lista de aplicaciones '''VersionApiMurachi'''

  1. Ejecutar el portal (VersionApiMurachi?) haciendo clic en el enlace https://localhost:8443/VersionApiMurachi desplegara el portal que realiza el consumo de la versión del servicio de Murachí (ver figura 8)
  1. Editar el portal si se va a consumir del servicio Murachí entorno de pruebas, en este sentido se procede a cambiar en el método $.ajax la propiedad url la dirección de la petición que apunte al entorno de prueba. Entonces, se debe acceder al directorio CATALINA_HOME/webapps/VersionApiMurachi/ y editar el archivo VersionApiMurachi?.html
    # cd CATALINA_HOME/webapps/VersionApiMurachi/
    

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

$.ajax({
   url: "https://localhost:8443/Murachi/0.1/archivos",
   //url: "https://murachi.cenditel.gob.ve/Murachi/0.1/archivos",
  1. Reiniciar el servicio Tomcat y abrir el portal (VersionApiMurachi?). Ver figura 9

Figura 9. Portal Web de pruebas'''VersionApiMurachi'''

  1. Para consultar la versión del servicio Murachí hacer clic al boton Enviar. Ver figura 10

Figura 10. Consumo de la Versión del servicio Murachí


5. Implementación de un Portal Web para el 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.

  1. Descargar el portal que se tiene disponible en formato .war -> Descargar.
  1. Ejecutar el proceso de cargar y desplegar en el servidor Tomcat, para la misma debemos realizar los pasos de la sección anterior: 3. Implementación del servicio Murachí (.war) > 3.1 Cargar archivo .war

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

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

  1. Ejecutar el portal (pruebaservicioweb) haciendo clic en el enlace https://localhost:8443/pruebaservicioweb desplegara el portal que realiza el consumo del servicio de Murachí (ver figura 12)

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

  1. Editar el portal si se va a consumir del servicio Murachí pruebas, en este sentido se procede a cambiar en el método $.ajax la propiedad url la dirección de la petición que apunte al entorno de prueba. Entonces, se debe acceder al directorio CATALINA_HOME/webapps/pruebaservicioweb/ y editar 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://localhost:8443/Murachi/0.1/archivos", donde localhost es la dirección IP o dominio del entorno de pruebas.

$.ajax({
   url: "https://localhost:8443/Murachi/0.1/archivos",
   //url: "https://murachi.cenditel.gob.ve/Murachi/0.1/archivos",
  1. Guardar los cambios.
  1. Para el consumo del servicio de Murachí se requeire instalar un complemento de firma en el navegador Chrome quien será el encargado de gestionar los dispositivos criptográficos, en tal sentido debe realizar la instalación del mismo siguiendo los paso de instalación descrito en el siguiente enlace Configuración instalación del complemento.
  1. Finalmente el portal esta listo para consumir los servicio de Murachí desde su servidor de prueba.
Last modified 5 years ago Last modified on Oct 3, 2019, 9:27:16 AM

Attachments (15)

Download all attachments as: .zip