• No se han encontrado resultados

10.11. Configuración de certificado de Portafirmas

10.11.3. Cambio de certificado

Para realizar dicha acción se debe detener la aplicación, ya que, este certificado, se carga al iniciar. Como se ha comentado anteriormente el certificado se encuentra en la ruta fija:

$CONTEXTO_PFIRMA$/WEB-INF/classes/pfirma_server.p12

Se debe sustituir el certificado que aparece en dicho ruta por el certificado propio, autogenerado en el punto anterior o provisto por una entidad certificadora.

Además del almacén con el certificado y su clave privada asociada, debemos colocar en otra ruta la clave pública de dicho certificado. Se debe tener mucho cuidado al generar dicho fichero, ya que, estará en una ruta pública de Portafirmas, puesto que tiene que ser descargable desde el cliente que realiza la encriptación. Para generar dicha clave pública seguimos los siguientes pasos:

1) Con la herramienta keytool y partiendo de un almacén del tipo PKCS12, como el generado en el paso anterior:

$ keytool -exportcert -keystore pfirma_server.p12 -storetype PKCS12 -alias pfirma -file pfirma_server.cer Escriba la contraseña del almacén de claves:

Certificado almacenado en el archivo <pfirma_server.cer>

2) Vemos su contenido:

$ keytool -printcert -file pfirma_server.cer

Propietario: CN=Portafirmas, OU=Guadaltel, O=Guadaltel, L=Sevilla, ST=Sevilla, C=ES Emisor: CN=Portafirmas, OU=Guadaltel, O=Guadaltel, L=Sevilla, ST=Sevilla, C=ES Número de serie: 5371eef3

Válido desde: Tue May 13 12:07:47 CEST 2014 hasta: Thu May 12 12:07:47 CEST 2016 Huellas digitales del certificado:

MD5: 71:AE:E5:E3:DA:F8:EC:77:D5:1A:80:97:25:F6:72:39

SHA1: 6C:05:4A:F1:24:EF:0C:6F:48:DD:E1:88:94:E2:F0:15:91:A8:48:6F Nombre del algoritmo de firma: SHA1withDSA

Versión: 3

3) Convertimos la parte pública del certificado a formato PEM con la herramienta openssl: $ openssl x509 -inform der -in pfirma_server.cer -out pfirma_server.pem

4) Vemos su contenido: $ more pfirma_server.pem ---BEGIN CERTIFICATE--- MIICUTCCAbqgAwIBAgIETZx8+jANBgkqhkiG9w0BAQUFADBtMQswCQYDVQQGEwIz NDEQMA4GA1UECBMHU0VWSUxMQTEQMA4GA1UEBxMHU0VWSUxMQTESMBAGA1UEChMJ R3VhZGFsVEVMMRAwDgYDVQQLEwdVbmtub3duMRQwEgYDVQQDEwtQb3J0YWZpcm1h czAeFw0xMTA0MDYxNDQ3MjJaFw0yMTA0MDMxNDQ3MjJaMG0xCzAJBgNVBAYTAjM0 MRAwDgYDVQQIEwdTRVZJTExBMRAwDgYDVQQHEwdTRVZJTExBMRIwEAYDVQQKEwlH dWFkYWxURUwxEDAOBgNVBAsTB1Vua25vd24xFDASBgNVBAMTC1BvcnRhZmlybWFz MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCBCoeqQbGszL/bSnge0kS3XBe2 BqrL7rW+gpQhLeuosvUASaD4g6rVahzVHZ7qCezd3+dV5SkoPlzLNOmtz7aqDdh+ l3yvjY3/mOZJJxHbpJke2AK42TkLvJSlL0bXze8yYDLcZJrcfmhY+7me6P9GdSF2 yzBsiJlSyl9XSVo0BwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBABUJOIF8xHJUj58y J3wdWPWuqSfpGtGirMDDs05jxIhnnkLz2wplnGenj8+Uue36grTkR872QDGe/iLB 0AT3sXN4mECcGAODquKua4iZO7slEvI2T3qpvCjGUpDpHRNzNepbo6tolzN2Zn8F uSCt4C/ZMXibep4hOX3dQ9E7wf+T ---END CERTIFICATE---

$ openssl x509 -pubkey -noout -in pfirma_server.pem > pfirma_server_public.pem 4) Vemos su contenido:

$ more pfirma_server_public.pem ---BEGIN PUBLIC KEY---

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCBCoeqQbGszL/bSnge0kS3XBe2 BqrL7rW+gpQhLeuosvUASaD4g6rVahzVHZ7qCezd3+dV5SkoPlzLNOmtz7aqDdh+ l3yvjY3/mOZJJxHbpJke2AK42TkLvJSlL0bXze8yYDLcZJrcfmhY+7me6P9GdSF2 yzBsiJlSyl9XSVo0BwIDAQAB

---END PUBLIC KEY---

Una vez que tenemos dicho fichero generado, lo copiamos a la ruta siguiente, sustituyendo al de desarrollo: $CONTEXTO_PFIRMA$/WEB-INF/classes/pfirma_server_public.pem

Las restricciones del fichero con la clave pública son:

El almacén PKCS12 sólo puede tener un certificado.

10.12. Restringir acceso a los servicios web

Si tenemos la aplicación publicada a internet, o dentro de una red interna donde queremos llevar el control desde que sistemas se ataca a la interfaz de servicios web, a parte de publicar bajo SSL el interfaz del usuario como los servicios web, es recomendable restringir por IP qué máquinas tienen acceso a estos últimos.

La forma más sencilla es indicar una restricción sobre el perfil de apache que tengamos definidos para los puertos 80 o 443, normalmente en:

/etc/apache2/sites-enabled

Editamos el archivo de configuración para los puertos 80 o 443, el cual comienza normalmente por: <VirtualHost *:80>

Dentro de esta etiqueta, incluimos dos etiquetas <Location> para restringir el acceso a las dos rutas donde se encuentran publicados los servicios web:

<Location "/<contexto>/services"> Order Deny,Allow

Deny from all

Allow from 127.0.0.1/255.255.255.0 </Location>

<Location "/<contexto>/servicesv2"> Order Deny,Allow

Deny from all

Allow from 127.0.0.1/255.255.255.0 </Location>

Con estas dos clausulas denegamos el acceso a los servicios a todas las direcciones IP's salvo las realizadas desde “localhost”, desde el propio servidor de aplicaciones. Si queremos ampliar a otras IP's o subredes se incluirían a continuación de la dirección de localhost, una a continuación de la otra.

Veamos un ejemplo para el contexto “pfirmav3” y una intranet de 192.168.61.X quedaría: <Location "/pfirmav3/services">

Order Deny,Allow Deny from all

Allow from 192.168.61.0/255.255.254.0 127.0.0.1/255.255.255.0 </Location>

<Location "/pfirmav3/servicesv2"> Order Deny,Allow

Deny from all

Allow from 192.168.61.0/255.255.254.0 127.0.0.1/255.255.255.0 </Location>

10.13. Instalación de servicio OpenOffice

OpenOffice y LibreOffice tienen la funcionalidad de poder ejecutarse como servicio para poder realizar operaciones sobre documentos a través de un puerto remoto al que conectarnos.

Por temas de rendimiento y estabilidad la versión recomendada para ofrecer este servicio es OpenOffice 3.1.1, que si bien es una versión antigua, ofrece las funcionalidades necesarias para la conversión de documentos con unos tiempos de respuesta aceptables.

Veamos a continuación la instalación de un servicio OpenOffice sobre un Centos, aunque realmente el proceso es muy similar en otras distribuciones:

1. Lanzamos la siguiente secuencia de comandos: cd /opt wget http://archive.apache.org/dist/incubator/ooo/stable/3.1.1/OOo_3.1.1_LinuxX86-64_install_wJRE_en- US.tar.gz tar -xvzf OOo_3.1.1_LinuxX86-64_install_wJRE_en-US.tar.gz cd OOO310_m19_native_packed-2_en-US.9420/RPMS/ rm -rf ooobasis3.1-gnome-integration-3.1.1-9420.x86_64.rpm rpm -Uvh *.rpm

2. Instalamos la librería libXext, necesaria para ejecución en modo servidor: yum install libXext

3. Para habilitarlo como servicio, hay que crear el siguiente archivos /etc/init/openoffice.conf

Con el siguiente contenido: start on runlevel [2345] stop on runlevel [2345] expect daemon respawn script . /etc/sysconfig/openoffice

exec $OFFICE_PATH/soffice.bin $OFFICE_ARGS1 $OFFICE_ARGS2 & end script

Y este archivo: /etc/sysconfig/openoffice

Con el siguiente contenido: VDISPLAY='0'

OFFICE_PATH='/opt/openoffice.org3/program'

OFFICE_ARGS1="-nofirststartwizard -nologo -headless -invisible -norestore"

OFFICE_ARGS2=-accept="socket,host=0.0.0.0,port=8100;urp;StarOffice.ServiceManager"

initctl start openoffice

5. Comprobamos que está arrancado: [root@servidor init]# ps -ef | grep of

root 4 2 0 Mar21 ? 00:00:06 [ksoftirqd/0]

root 30032 1 0 07:53 ? 00:00:00 /opt/libreoffice3.6/program/soffice.bin -nofirststartwizard -nologo -headless -invisible -norestore -accept=socket,host=0.0.0.0,port=8100;urp;StarOffice.ServiceManager root 30191 29913 0 07:57 pts/1 00:00:00 grep of

En función del servidor, es probable que tengamos que añadir el puerto 8100 dentro del iptables de la máquina, para que el servicio sea accesible. Revisar por tanto la configuración de firewall de la máquina.

Documento similar