jueves, 25 de julio de 2019

Autofirma (II), Ubuntu 18.04. Guia definitiva. Perdida de certificados. Ejecución en consola de Autofirma. Diferentes resultados de firma. Cades implicit. PKCS#11

0. Introducción

Me he inspirado bastante en Alvaro Gonzalez Sotillo.
Cuando se instala una nueva versión de Java o se actualiza Ubuntu, se pueden perder los certificados instalados en Mozilla, y por tanto se pierden los certificados de Autofirma.

1. Verificar que Mozilla tenga los certificados cargados:


En Preferencias->Seguridad y privacidad ->Ver certificados me ha aparecido una panntalla que no ha aparecido ningún certificado ni parecía el botón de importar.
La solución es tan tonta como ampliar la pantalla arrantrando como indica la flecha y ahora ya se pueden importar certificados p12 pues ya aparece el botón de importar




2. Restaurar instalación de Autofirma


Si  no aparece el certificado en Autofirma, hay que restaurar la instalación. Para ello entramos en Autofirma ->Herramientas->Reestaurar instalación

Y nos pide salir del navegador si está abierto.

Ojo solo funciona con java 1.8, Ojo solo funciona con un JDK de Oracle, de todas formaspor tanto hay que buscar la ruta de instalación de java 1.8  de Oracle y modificar el fichero /usr/bin/Autofirma para que contenga


1
2
3
#!/bin/bash
# java -jar /usr/lib/AutoFirma/AutoFirma.jar $*
/usr/lib/jvm/java-8-oracle/jre/bin/java  -jar /usr/lib/AutoFirma/AutoFirma.jar $*

Donde la última línea indica la llamada a java con la ruta absoluta del jdk 1.8

En teroría ya debería encontrar los certificados

3. Ejecutar Autofirma desde la línea de comandos


Como se dice muy bien el Atareado se puede utilizar en línea de comandos. Os copio lo que el ha hecho a falta de probarlo. De momento yo no lo he podido hacer funcionar por no saber mi alias


1
2
3
4
5
#firmar un documento pdf
AutoFirma sign -i entrada.pdf -o salida.pdf -store pkcs12:/home/lorenzo/Escritorio/certificado.p12 -alias firma -password micontreña

#firmar los documentos pdf de una carpeta
for i in entrada_*.pdf; do AutoFirma sign -i $i -o ${i/.pdf/}_signed.pdf -store pkcs12:/home/lorenzo/Escritorio/certificado.p12 -alias firma -password micontraseña; done


Pero si miramos el manual de Autofirma, vemos que si se puede obtener el alias e incluso utilzar otros almacenes de claves.

Si ejecutamos desde /usr/bin:

./Autofirma cmd -help

obtenemos:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
Comandos cmd:

  sign   (firma de fichero)
  cosign  (cofirma de fichero)
  countersign  (contrafirma de fichero)
  listaliases  (lista los alias disponibles en el almacen)
  verify  (abre un panel con la informacion de validacion de una firma o certificado)

  batchsign  (firma/multifirma de lotes de ficheros)

  createdigest  (creacion de huella digitales con interfaz grafica)

  checkdigest  (comprobacion de huella digitales con interfaz grafica)

Y si le damos a la ayuda de firmar

./Autofirma sign -help

obtenemos:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Sintaxis: AutoFirma sign [options...]

options

  -gui    (Realiza la operacion con entorno grafico)
  -i inputfile   (Ruta del fichero de entrada)
  -o outputfile   (Ruta del fichero de salida)
  -algorithm algo  (Algoritmo de firma)
  -format   (Establece el formato de firma)
    auto   (Seleccion de formato en base al fichero de entrada)
    cades   (Formato CAdES)
    pades   (Formato PAdES)
    xades   (Formato XAdES)
    facturae  (Firma de factura electronica)
  -config extraParams  (Properties en texto plano con la configuracion de la operacion)
  -store   (Establece el almacen de claves. Por defecto, el del sistema)
    auto   (Almacen de claves del sistema)
    windows  (Almacen de claves de Windows)
    mac   (Almacen de claves de Mac OS X)
    mozilla  (Almacen de claves de Mozilla Firefox)
    dni   (DNI electronico)
    pkcs12:p12file  (Almacen PKCS#12. "p12file" es la ruta del almacen)
    pkcs11:p11file  (Almacen PKCS#11. "p11file" es la ruta del controlador)
  -password password  (Establece la contrasena del almacen)
  -alias alias   (Alias del certificado de firma)
  -filter filter  (Filtro para seleccionar el certificado de firma)
  -xml    (Formatea la respuesta como XML)

Y si le damos a la ayuda de ver los alias:


./Autofirma listaliases -help


obtenemos:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
Sintaxis: AutoFirma listaliases [options...]

options

  -store   (Establece el almacen de claves. Por defecto, el del sistema)
    auto   (Almacen de claves del sistema)
    windows  (Almacen de claves de Windows)
    mac   (Almacen de claves de Mac OS X)
    mozilla  (Almacen de claves de Mozilla Firefox)
    dni   (DNI electronico)
    pkcs12:p12file  (Almacen PKCS#12. "p12file" es la ruta del almacen)
  -password password  (Establece la contrasena del almacen)
  -xml    (Formatea la respuesta como XML)


Veamos pues alguna de las diferentes opciones de firma

3.1 Utilizar el almacén de certificados de Mozilla

Primerament debemos obtener el ALIAS. desde /usr/bin ejecutamos:


1
./AutoFirma  listaliases -store mozilla

Nos devuelve:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
de jul. 26, 2019 8:51:26 AM es.gob.afirma.keystores.mozilla.MozillaKeyStoreUtilities loadNSS
INFO: Configuracion de NSS para SunPKCS11:
name=NSSCrypto-AFirma
library=/usr/lib/thunderbird/libsoftokn3.so
attributes=compatibility
slot=2
showInfo=false
allowSingleThreadedModules=true
nssArgs="configdir='sql:/USERHOME/.mozilla/firefox/fofoapzr.default-release' certPrefix='' keyPrefix='' flags='readOnly'"
de jul. 26, 2019 8:51:26 AM es.gob.afirma.keystores.mozilla.MozillaKeyStoreUtilities loadNssJava8
INFO: NSS necesita una precarga o tratamiento de sus dependencias: java.lang.reflect.InvocationTargetException
de jul. 26, 2019 8:51:26 AM es.gob.afirma.keystores.mozilla.MozillaKeyStoreUtilities loadNSS
INFO: Proveedor PKCS#11 para NSS anadido: SunPKCS11-NSSCrypto-AFirma
de jul. 26, 2019 8:51:26 AM es.gob.afirma.keystores.AOKeyStoreManager init
INFO: Inicializamos el almacen de tipo: DNIe y tarjetas FNMT-TIF
de jul. 26, 2019 8:51:26 AM es.gob.afirma.keystores.KeyStoreUtilities addPreferredKeyStoreManagers
INFO: No se ha encontrado un DNIe: java.security.ProviderException: No se ha podido inicializar el proveedor de DNIe: es.gob.jmulticard.apdu.connection.NoReadersFoundException: No se detectaron lectores de tarjetas en el sistema
de jul. 26, 2019 8:51:26 AM es.gob.afirma.keystores.mozilla.MozillaKeyStoreUtilities getMozillaPKCS11Modules
INFO: Se incluiran los modulos nativos de DNIe/CERES si se encuentran configurados
de jul. 26, 2019 8:51:26 AM es.gob.afirma.keystores.mozilla.MozillaKeyStoreUtilities getMozillaPKCS11Modules
INFO: Obtenidos los modulos externos de Mozilla desde 'pkcs11.txt'
de jul. 26, 2019 8:51:26 AM es.gob.afirma.keystores.mozilla.MozillaUnifiedKeyStoreManager init
INFO: No se han encontrado modulos PKCS#11 externos instalados en Firefox
EPN1

Y en la línea 24 vemos "EPN1" que es el alias en cuestión.

Ahora nos toca firmar:


1
./AutoFirma  sign -i /home/ximo/xml/xml1.xml -o /home/ximo/xml/xmlq_firma.xsig -format xades -store mozilla -alias EPN1

3.2 Utilizar un fichero "p12" como almacén de certificados
Primerament debemos obtener el ALIAS. desde /usr/bin ejecutamos:


1
./AutoFirma  listaliases -store pkcs12:/home/ximo/certs/mycert.p12 -password myPassword

Nos devuelve simplemente "epn1" que es nuestro alias en cuestión.


También hubieramos podido utilizar keytool  como se dice en Stackoverflow:

1
keytool -v -list -storetype pkcs12 -keystore /home/ximo/certs/mycert.p12 -storepass myPassword

y saldría:

1
2
3
4
5
6
Keystore type: PKCS12
Keystore provider: SUN

Your keystore contains 1 entry

Alias name: epn1

Con lo que el alias resultante es el mismo.

Ahora desde /usr/bin intentamos firmar:


1
./AutoFirma  sign -i /home/ximo/xml/xml1.xml -o /home/ximo/xml/xml1_firma1.xsig -format xades -store pkcs12:/home/ximo/certs/mycert.p12 -alias epn1 -password myPassword


Y obtenemos el mismo resultado.

4. Diferentes formatos de firma al ejecutar en "GUI" y línea de comandos

Hay alguna sutileza que trae como consecuencia que los formatos de salida sean ligeramente distintos.

Veamos una imagen donde se ve que la estructura de la firma es prácticamente la misma pero cambia la localizaciíon del contenido a firmar.

La parte de arriba corresponde a una firma en línea de comandos y la de la parte de abajo desde la opción "GUI" (graphic user interface).

Se remarca los contenidos a firmar.


Si se intentan validar los ficheros con Autofirma (Archivo-> Ver Firma) se observa que ambos ficheros son correctos.

5. Firmar con tarjeta en Ubuntu

Para firmar con tarjeta hay que definir el lector de tarjetas criptográficas  tal como se ha indicado en este post.

Una vez comprobado que funciona com Mozilla, se prueba con el programa keystore explorer, y vamos al menú superior y le indicamos File > Open Special > Open PKCS#11




se le da la librería de dicha tarjeta que es /usr/lib/lib/libaetpkss.so




y nos muestra los alias de los certificados (en este caso es EPN1)



Por tanto para elegir nuestro certificado utilizaremos

-store pkcs11:/usr/lib/libaetpkss.so -alias EPN1 -password myPassword

Y nuestro comando quedaria 
/usr/bin/AutoFirma  sign  -i ficheroAFirmar -o ficheroFirma -format cades -config "mode=implicit" -store pkcs11:/usr/lib/libaetpkss.so -alias EPN1 -password myPassword


6. Firma de expedientes. Firmar el índice con formato cades implícito

Según Gamuzi podemos ejecutar este comando:

/usr/bin/AutoFirma  sign  -i rutaFicheroEntrada -o rutaFicheroSalida -format cades -config "mode=implicit" -store pkcs12:$(RESOURCES)/certs/mycert.p12 -alias epn1 -password myPassword
Siendo :
pkcs12:$(RESOURCES)/certs/mycert.p12  la ruta al fichero donde está el certificado
epn1  el alias del certificado (se puede ver usando el programa KeyStore Explorer  )
myPassword  el password del certrificado

Para que sea el formato cades implicito: -format cades -config "mode=implicit"  

7. Firma de expedientes. Firmar el índice con formato XadES Detached 

También se puede utilizar el AutoFirma.jar ejecutado desde una versión de java
/home/eduard/MyPrograms/jdk-Oracle-11.0.17/bin/java -jar /usr/lib/AutoFirma/AutoFirma.jar  sign  -i rutaFicheroEntrada -o rutaFicheroSalida -format xades -store pkcs12:rutaCertificado -alias epn1 -password myPassword  -config "format=XAdES Detached"
Siendo :
pkcs12:rutaCertificado la ruta al fichero donde está el certificado en formato .p12
epn1  el alias del certificado (se puede ver usando el programa KeyStore Explorer  )
myPassword  el password del certrificado

Para que sea el formato XadeES Detached -format xades -config "format=XAdES Detached"


8. Firma de expedientes. Firmar de la parte de contenido del fichero índice de expedientes (<ns2:IndiceContenido Id="EXP_INDICE_CONTENIDOES....) al que le tenemos que indicar el id. El formato a firmar es XadES Enveloped y descargamos la firma en otra etiqueta xml que contiene namespaces. Le tenemos que pasar el certificado para firmar

Este comando debe ir en una sola línea (observese que con "\" se ha roto las líneas para que se vwea mejor. 

java -jar /usr/lib/AutoFirma/AutoFirma.jar sign  -i provaAFirmar.xml -o provaAFirmar.signed.xml \
 -format xades -store pkcs12:Certificado.p12 -alias mialias -password micontraseña \
 -config "format=XAdES Enveloped\n \
          nodeToSign=EXP_INDICE_CONTENIDOES_L01462384_2022_EXP_61561C\n \
          insertEnvelopedSignatureOnNodeByXPath = //*[local-name()='FirmaConCertificado']"

OJO observar:
1. La separación "\n" de los parámetros del config
2. nodeToSign apunta al id del campo y no a la tag
3. Para localizar el tag al que se anexa la firma se utiliza local_name() para evitar los namespaces
 
Veamos parte del documento a firmar y queremos firmar el Id (EXP_INDICE_CONTENIDOES_L01462384_2022_EXP_61561C) y descargarlo dentro de <ns3:FirmaConCertificado>

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<insidews:expediente xmlns:ns2="http://administracionelectronica.gob.es/ENI/XSD/v1.0/expediente-e/indice-e" xmlns="http://administracionelectronica.gob.es/ENI/XSD/v1.0/expediente-e/indice-e/contenido" xmlns:ns4="http://www.w3.org/2000/09/xmldsig#" xmlns:ns3="http://administracionelectronica.gob.es/ENI/XSD/v1.0/firma" xmlns:insidews="https://ssweb.seap.minhap.es/Inside/XSD/v1.0/WebService" xmlns:ns9="https://ssweb.seap.minhap.es/Inside/XSD/v1.0/expediente-e" xmlns:ns5="http://administracionelectronica.gob.es/ENI/XSD/v1.0/expediente-e/metadatos" xmlns:ns6="http://administracionelectronica.gob.es/ENI/XSD/v1.0/documento-e/contenido" xmlns:ns7="http://administracionelectronica.gob.es/ENI/XSD/v1.0/expediente-e" xmlns:ns8="https://ssweb.seap.minhap.es/Inside/XSD/v1.0/metadatosAdicionales">
    
<ns7:expediente xmlns:insidews="https://ssweb.seap.minhap.es/Inside/XSD/v1.0/WebService" xmlns:ns9="https://ssweb.seap.minhap.es/Inside/XSD/v1.0/expediente-e" xmlns:ns8="https://ssweb.seap.minhap.es/Inside/XSD/v1.0/metadatosAdicionales" Id="ES_L01462384_2022_EXP_61561C" xmlns:ns2="http://administracionelectronica.gob.es/ENI/XSD/v1.0/expediente-e/indice-e" xmlns="http://administracionelectronica.gob.es/ENI/XSD/v1.0/expediente-e/indice-e/contenido" xmlns:ns4="http://www.w3.org/2000/09/xmldsig#" xmlns:ns3="http://administracionelectronica.gob.es/ENI/XSD/v1.0/firma" xmlns:ns5="http://administracionelectronica.gob.es/ENI/XSD/v1.0/expediente-e/metadatos" xmlns:ns6="http://administracionelectronica.gob.es/ENI/XSD/v1.0/documento-e/contenido" xmlns:ns7="http://administracionelectronica.gob.es/ENI/XSD/v1.0/expediente-e">
    <ns2:indice Id="EXP_INDICE_ES_L01462384_2022_EXP_61561C">
        <ns2:IndiceContenido Id="EXP_INDICE_CONTENIDOES_L01462384_2022_EXP_61561C">
            <FechaIndiceElectronico>2022-11-26T13:41:52.338+01:00</FechaIndiceElectronico>
            <CarpetaIndizada>
                <IdentificadorCarpeta>carpeta1</IdentificadorCarpeta>
                <DocumentoIndizado>
                    <IdentificadorDocumento>ES_L01462384_2022_DOC_1445532_0000_perrycollins200</IdentificadorDocumento>
                    <ValorHuella>9f94246bf88cc27aa324399adfcc481bc30e8259edaae605c56775696c2c6e0e69716d600a8f52d33b9fdf8e3af6012809af7181c942f6a1e7629c2d07bb66a5</ValorHuella>
                    <FuncionResumen>http://www.w3.org/2001/04/xmlenc#sha512</FuncionResumen>
                    <FechaIncorporacionExpediente>2024-11-06T06:54:10.242+01:00</FechaIncorporacionExpediente>
                    <OrdenDocumentoExpediente>00001</OrdenDocumentoExpediente>
                </DocumentoIndizado>
                <DocumentoIndizado>
                    <IdentificadorDocumento>ES_L01462384_2022_DOC_1445533_0000_Peticiondeacces</IdentificadorDocumento>
                    <ValorHuella>6aa7c4fff6e42212a79b629fa7b0c19bbd77d500fe68a178ce0138b04b6c895b25979ebe59272fca6a8fd4f1694c91ff55709e635d8a7d1329a74198103583b4</ValorHuella>
                    <FuncionResumen>http://www.w3.org/2001/04/xmlenc#sha512</FuncionResumen>
                    <FechaIncorporacionExpediente>2024-11-06T06:54:44.178+01:00</FechaIncorporacionExpediente>
                    <OrdenDocumentoExpediente>00002</OrdenDocumentoExpediente>
                </DocumentoIndizado>
            </CarpetaIndizada>
            <CarpetaIndizada>
                <IdentificadorCarpeta>carpeta2</IdentificadorCarpeta>
                <DocumentoIndizado>
                    <IdentificadorDocumento>ES_L01462384_2022_DOC_1445534_0000_ResolucionDTIC2</IdentificadorDocumento>
                    <ValorHuella>1414c6574f6ab51e40cb7a02a035f0b422bd2dda5f58ea504f40fd53f6d5bebe13f6d99151a098756c850bd849485745c37c8ec8621f47cea61b658b61b7165d</ValorHuella>
                    <FuncionResumen>http://www.w3.org/2001/04/xmlenc#sha512</FuncionResumen>
                    <FechaIncorporacionExpediente>2024-11-06T06:56:52.002+01:00</FechaIncorporacionExpediente>
                    <OrdenDocumentoExpediente>00001</OrdenDocumentoExpediente>
                </DocumentoIndizado>
                <DocumentoIndizado>
                    <IdentificadorDocumento>ES_L01462384_2022_DOC_1445535_0000_planostaladrode</IdentificadorDocumento>
                    <ValorHuella>9b6b323e0de8dfb3929094d9508f314cdcc360689f84e79630238fe33de92c8a638a1f71e42c255de3c59f429a45b193316eb61487162904507c529d33aba904</ValorHuella>
                    <FuncionResumen>http://www.w3.org/2001/04/xmlenc#sha512</FuncionResumen>
                    <FechaIncorporacionExpediente>2024-11-06T06:57:10.953+01:00</FechaIncorporacionExpediente>
                    <OrdenDocumentoExpediente>00002</OrdenDocumentoExpediente>
                </DocumentoIndizado>
            </CarpetaIndizada>
        </ns2:IndiceContenido>
        <ns3:firmas>
            <ns3:firma Id="FIRMA_0" ref="#EXP_INDICE_CONTENIDOES_L01462384_2022_EXP_61561C">
                <ns3:TipoFirma>TF03</ns3:TipoFirma>
                <ns3:ContenidoFirma>
                    <ns3:FirmaConCertificado>
                        <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="Signature-9be6c2d0-1979-4dec-a791-9365cbe41d73-Signature"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/><ds:Reference Id="Reference-a73c9062-80a7-410c-9fad-3c003fd93ab4" URI="#EXP_INDICE_CONTENIDOES_L01462384_2022_EXP_61561C"><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/><ds:Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"><ds:XPath xmlns:ds="http://www.w3.org/2000/09/xmldsig#">not(ancestor-or-self::ds:Signature)</ds:XPath></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha512"/><ds:DigestValue>Mz2e0Uakxd2DFXZuV0eWNeSIL879M50Ey4NgX6clQO/LaxBQrKZCHbDKdR9PJthaOcsyfkkfkxeviqzqyOWqog==</ds:DigestValue></ds:Reference><ds:Reference Type="http://uri.etsi.org/01903#SignedProperties" URI="#Signature-9be6c2d0-1979-4dec-a791-9365cbe41d73-SignedProperties"><ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha512"/><ds:DigestValue>BOlDhhWNelo9kAJ6+8TGaImEsR5Nud81v/jAgyby7tx7DT6py2wRxis0DsHy1UbWJfacc63uVSUs6Af8/SqiKQ==</ds:DigestValue></ds:Reference><ds:Reference URI="#Signature-9be6c2d0-1979-4dec-a791-9365cbe41d73-KeyInfo"><ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha512"/><ds:DigestValue>lupfsLEvciK+yG8QVDqpgOa+RXXl4Fit/ssort6e7CbqPF5TAXt2ihEPqKAaw8Y3ZvvbGWMRzoJqkTX2z3zu+Q==</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue Id="Signature-9be6c2d0-1979-4dec-a791-9365cbe41d73-SignatureValue">bUENUAShsZLdDLOZ5HpMQWckPN9MIeoiY4O1AHuj6zzuFSYn4rBJX/+6IdW+Ffpiy8Pd5GSF4W9YchfrkIcQZp9h9zMa/jdJBfOiESXXstP9rOQtUX7hiUOEHE8I6oli972IC5mQt1jucMfFi+qyHs/dbqfs+L6vG67N5XUDX+vZcJuGbyiufjhK3JlalORSgNw8pxCzAHZZ8tCtcDID2Dps+qsunHOwROt/C9gfLeLbIn2QQjO9ekZB1wJnDtmEJ1yRih4LVZKXwU0JXk3wAjN40tLv2++CyvLc6AZ3m9vMAcVyQVPDm5kw1pwD25CIE1kUkPLWd/seluOR/b5Cag==</ds:SignatureValue><ds:KeyInfo Id="Signature-9be6c2d0-1979-4dec-a791-9365cbe41d73-KeyInfo"><ds:X509Data><ds:X509Certificate>MIIIOjCCByKgAwIBAgIQXyFDAiGNkgFmQ1XjDlQIpzANBgkqhkiG9w0BAQsFADBNMQswCQYDVQQGEwJFUzERMA8GA1UECgwIRk5NVC1SQ00xDjAMBgNVBAsMBUNFUkVTMRswGQYDVQQDDBJBQyBSZXByZXNlbnRhY2nDs24wHhcNMjQwNTE0MTIxNTMxWhcNMjcwNTE0MTIxNTMwWjCB6TELMAkGA1UEBhMCRVMxDzANBgNVBAcMBk1BRFJJRDE1MDMGA1UECwwsU0VDUkVUQVJJQSBHRU5FUkFMIERFIEFETUlOSVNUUkFDSU9OIERJR0lUQUwxPzA9BgNVBAoMNk1JTklTVEVSSU8gREUgVFJBTlNGT1JNQUNJT04gRElHSVRBTCBZIEZVTkNJT04gUFVCTElDQTESMBAGA1UEBRMJUzI4MDE1MDJCMRgwFgYDVQRhDA9WQVRFUy1TMjgwMTUwMkIxIzAhBgNVBAMMGlNFTExPIEVOVElEQUQgU0dBRCBQUlVFQkFTMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2f5vHYqVoHCXdLjBLj/msWdGY+Kq8O/mJYkyrnKsBwhrYkuPFojV92GqVfl2TtZelTQJJNnUSEDw0IDU2IvekbjeCi6q8CdrQbmT5IPbNz6A4IYSnxFBvKmzpz915oHvyQvevsblzY/fWPwVTTWJNrmwuH5mTHupyVTDGJqHZ8aGs5+8Ni+W3SqbnnblXcbZangGdz7si/q0XnV4xWfZf/WCnlLuVZ+DrbFNlJuki+MEjIltm7YJmJ5OmLOPGYjn3MokMZctje8FZdwwh5lLcAdZeaOOBG+IUA9goes148MdYdOQYVn9ez2iCU8yp48MfsHd4DIB4NloGcIPXYvfDwIDAQABo4IEdzCCBHMwgZ0GA1UdEQSBlTCBkqSBjzCBjDEpMCcGCSsGAQQBrGYBCAwaU0VMTE8gRU5USURBRCBTR0FEIFBSVUVCQVMxGDAWBgkrBgEEAaxmAQcMCVMyODAxNTAyQjFFMEMGCSsGAQQBrGYBBgw2TUlOSVNURVJJTyBERSBUUkFOU0ZPUk1BQ0lPTiBESUdJVEFMIFkgRlVOQ0lPTiBQVUJMSUNBMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgXgMCoGA1UdJQQjMCEGCCsGAQUFBwMCBgorBgEEAYI3CgMMBgkqhkiG9y8BAQUwgYIGCCsGAQUFBwEBBHYwdDA9BggrBgEFBQcwAYYxaHR0cDovL29jc3ByZXAuY2VydC5mbm10LmVzL29jc3ByZXAvT2NzcFJlc3BvbmRlcjAzBggrBgEFBQcwAoYnaHR0cDovL3d3dy5jZXJ0LmZubXQuZXMvY2VydHMvQUNSRVAuY3J0MB0GA1UdDgQWBBSke+Fd61MIqtAjWJpLbQyaxvenrjCCATMGA1UdIASCASowggEmMIIBFwYKKwYBBAGsZgMLBDCCAQcwKQYIKwYBBQUHAgEWHWh0dHA6Ly93d3cuY2VydC5mbm10LmVzL2RwY3MvMIHZBggrBgEFBQcCAjCBzAyByUNlcnRpZmljYWRvIGN1YWxpZmljYWRvIGRlIHNlbGxvIGVsZWN0csOzbmljbyBzZWfDum4gcmVnbGFtZW50byBldXJvcGVvIGVJREFTLiBTdWpldG8gYSBsYXMgY29uZGljaW9uZXMgZGUgdXNvIGV4cHVlc3RhcyBlbiBsYSBEUEMgZGUgRk5NVC1SQ00gY29uIE5JRjogUTI4MjYwMDRKIChDL0pvcmdlIEp1YW4gMTA2LTI4MDA5LU1hZHJpZC1Fc3Bhw7FhKTAJBgcEAIvsQAEBMIGmBggrBgEFBQcBAwSBmTCBljAIBgYEAI5GAQEwEwYGBACORgEGMAkGBwQAjkYBBgIwaAYGBACORgEFMF4wLRYnaHR0cHM6Ly93d3cuY2VydC5mbm10LmVzL3Bkcy9QRFNfZXMucGRmEwJlczAtFidodHRwczovL3d3dy5jZXJ0LmZubXQuZXMvcGRzL1BEU19lbi5wZGYTAmVuMAsGBgQAjkYBAwIBDzAfBgNVHSMEGDAWgBTcUJaf1zGJyRHk75Zf9l+CUkZiUzCB4QYDVR0fBIHZMIHWMIHToIHQoIHNhoGdbGRhcDovL2xkYXByZXAuY2VydC5mbm10LmVzL0NOPUNSTDIzNTksT1U9QUMlMjBSZXByZXNlbnRhY2lvbixPVT1DRVJFUyxPPUZOTVQtUkNNLEM9RVM/Y2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdDtiaW5hcnk/YmFzZT9vYmplY3RjbGFzcz1jUkxEaXN0cmlidXRpb25Qb2ludIYraHR0cDovL3d3dy5jZXJ0LmZubXQuZXMvY3Jsc3JlcC9DUkwyMzU5LmNybDANBgkqhkiG9w0BAQsFAAOCAQEAu1r0RlFRSfBUDCl4YlZCSNIDdNbFGGe7ghqyXr81/o1UIs+CdFBVis3SVh6tPc27HogCuzRHjEimwIgQjZnC4i/IzYAMixnZNW4UMYW4sQcVC45s+GqSSEgAMGzB5XiiZLfMyuCWtHjb6da4QcZ3pZU6h4hrSi8yCroQgtKmaseyNTpInq75N9u5tf9sX+kee8TpWUToMfTyxjOKQRQTCwOcbcKM1GCFz5zbRyLGK9vwOiDaA8yBp55O8jg/a5N1mj8eTSXwaGRLqTV9R9BpNXIQsBg2hlz2uJe1AT16zWWG8G6B4xDprIyPRHqN1yeUWqqrJJ3A5i17TabmIY06nA==</ds:X509Certificate></ds:X509Data><ds:KeyValue><ds:RSAKeyValue><ds:Modulus>2f5vHYqVoHCXdLjBLj/msWdGY+Kq8O/mJYkyrnKsBwhrYkuPFojV92GqVfl2TtZelTQJJNnUSEDw0IDU2IvekbjeCi6q8CdrQbmT5IPbNz6A4IYSnxFBvKmzpz915oHvyQvevsblzY/fWPwVTTWJNrmwuH5mTHupyVTDGJqHZ8aGs5+8Ni+W3SqbnnblXcbZangGdz7si/q0XnV4xWfZf/WCnlLuVZ+DrbFNlJuki+MEjIltm7YJmJ5OmLOPGYjn3MokMZctje8FZdwwh5lLcAdZeaOOBG+IUA9goes148MdYdOQYVn9ez2iCU8yp48MfsHd4DIB4NloGcIPXYvfDw==</ds:Modulus><ds:Exponent>AQAB</ds:Exponent></ds:RSAKeyValue></ds:KeyValue></ds:KeyInfo><ds:Object><xades:QualifyingProperties xmlns:xades="http://uri.etsi.org/01903/v1.3.2#" Id="Signature-9be6c2d0-1979-4dec-a791-9365cbe41d73-QualifyingProperties" Target="#Signature-9be6c2d0-1979-4dec-a791-9365cbe41d73-Signature" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"><xades:SignedProperties Id="Signature-9be6c2d0-1979-4dec-a791-9365cbe41d73-SignedProperties"><xades:SignedSignatureProperties><xades:SigningTime>2024-11-06T06:59:28+01:00</xades:SigningTime><xades:SigningCertificate><xades:Cert><xades:CertDigest><ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha512"/><ds:DigestValue>ebaS6bwc7bz6ZxE3G7/NePBnLnySv1M09PczcAL4W2RfYNko3ojfZgWp//BdzfsQc2W5sR5X9soSMgpqKPMV6g==</ds:DigestValue></xades:CertDigest><xades:IssuerSerial><ds:X509IssuerName>CN=AC Representación, OU=CERES, O=FNMT-RCM, C=ES</ds:X509IssuerName><ds:X509SerialNumber>126449364486182580284042377630877747367</ds:X509SerialNumber></xades:IssuerSerial></xades:Cert></xades:SigningCertificate></xades:SignedSignatureProperties><xades:SignedDataObjectProperties><xades:DataObjectFormat ObjectReference="#Reference-a73c9062-80a7-410c-9fad-3c003fd93ab4"><xades:Description/><xades:ObjectIdentifier><xades:Identifier Qualifier="OIDAsURN">urn:oid:1.2.840.10003.5.109.10</xades:Identifier><xades:Description/></xades:ObjectIdentifier><xades:MimeType>text/xml</xades:MimeType><xades:Encoding/></xades:DataObjectFormat></xades:SignedDataObjectProperties></xades:SignedProperties></xades:QualifyingProperties></ds:Object></ds:Signature>
                    </ns3:FirmaConCertificado>
                </ns3:ContenidoFirma>
            </ns3:firma>
        </ns3:firmas>
    </ns2:indice>
    <ns5:metadatosExp Id="EXP_ES_L01462384_2022_EXP_61561C_METADATOS">
        <ns5:VersionNTI>http://administracionelectronica.gob.es/ENI/XSD/v1.0/expediente-e</ns5:VersionNTI>
        <ns5:Identificador>ES_L01462384_2022_EXP_61561C</ns5:Identificador>
        <ns5:Organo>L01462384</ns5:Organo>
        <ns5:FechaAperturaExpediente>2022-11-26T13:41:52.338+01:00</ns5:FechaAperturaExpediente>
        <ns5:Clasificacion>245055</ns5:Clasificacion>
        <ns5:Estado>E01</ns5:Estado>
    </ns5:metadatosExp>
    <ns7:VisualizacionIndice Id="VISUALIZACION_INDICE">
        <ns6:ValorBinario>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Mjg+PgplbmRvYmoKOSAwIG9iago8PC9EVyAxMDAwL1N1YnR5cGUvQ0lERm9udFR5cGUyL0NJRFN5c3RlbUluZm88PC9TdXBwbGVtZW50IDAvUmVnaXN0cnkoQWRvYmUpL09yZGVyaW5nKElkZW50aXR5KT4+L1R5cGUvRm9udC9CYXNlRm9udC9VWFpNSlorTGliZXJhdGlvblNhbnMvRm9udERlc2NyaXB0b3IgOCAwIFIvVyBbM1syNzddXS9DSURUb0dJRE1hcC9JZGVudGl0eT4+CmVuZG9iagoxMCAwIG9iago8PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDIxNT4+c3RyZWFtCnicXZBBS8QwEIXv+RVzdPGQbvVYclEWenAVW8VrNpmWgJ2EaXrov3ca1y44kIF5L194E/3UPrcUMug3jq7DDEMgzzjHhR3CBcdA6liDDy5fp9LdZJPSAnfrnHFqaYiqaUC/izlnXuGu77/uq4PSr+yRA42iPNYfn6J0S0rfOCFlqJQx4HGQp15sOtsJQRfwJvZrQqjLfPxN4KLHOVmHbGlE1VRSpjlJGYXk/9lX6DLcbj+YvddVYf7cDd8229O4hVmClvVLnC1IINx/KMW0USBH/QAYvmv/CmVuZHN0cmVhbQplbmRvYmoKMiAwIG9iago8PC9TdWJ0eXBlL1R5cGUwL1R5cGUvRm9udC9CYXNlRm9udC9VWFpNSlorTGliZXJhdGlvblNhbnMvRW5jb2RpbmcvSWRlbnRpdHktSC9EZXNjZW5kYW50Rm9udHNbOSAwIFJdL1RvVW5pY29kZSAxMCAwIFI+PgplbmRvYmoKMyAwIG9iago8PC9TdWJ0eXBlL1R5cGUxL1R5cGUvRm9udC9CYXNlRm9udC9IZWx2ZXRpY2EvRW5jb2RpbmcvV2luQW5zaUVuY29kaW5nPj4KZW5kb2JqCjUgMCBvYmoKPDwvS2lkc1s2IDAgUl0vVHlwZS9QYWdlcy9Db3VudCAxL0lUWFQoMS4zLjI2KT4+CmVuZG9iagoxMSAwIG9iago8PC9UeXBlL0NhdGFsb2cvUGFnZXMgNSAwIFIvVmVyc2lvbi8xLjc+PgplbmRvYmoKMTIgMCBvYmoKPDwvTW9kRGF0ZShEOjIwMjQxMTA2MDY1OTI4KzAxJzAwJykvQ3JlYXRpb25EYXRlKEQ6MjAyNDExMDYwNjU5MjgrMDEnMDAnKS9Qcm9kdWNlcihPcGVuUERGIDEuMy4yNik+PgplbmRvYmoKeHJlZgowIDEzCjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMTQyNyAwMDAwMCBuIAowMDAwMDA5NTA0IDAwMDAwIG4gCjAwMDAwMDk2MzkgMDAwMDAgbiAKMDAwMDAwMDAxNSAwMDAwMCBuIAowMDAwMDA5NzI3IDAwMDAwIG4gCjAwMDAwMDEyOTcgMDAwMDAgbiAKMDAwMDAwMTUyMCAwMDAwMCBuIAowMDAwMDA4ODI2IDAwMDAwIG4gCjAwMDAwMDkwMTIgMDAwMDAgbiAKMDAwMDAwOTIyMSAwMDAwMCBuIAowMDAwMDA5NzkxIDAwMDAwIG4gCjAwMDAwMDk4NDkgMDAwMDAgbiAKdHJhaWxlcgo8PC9JbmZvIDEyIDAgUi9JRCBbPDM1MmNjNGQ1MDAxOWFlOWZiNGEyM2UxYmI3ZThjMWE5PjxmYzE3NTFhNTBiOTI3NjhhZDYwMmI2MWYzNTRhYzQ2Yz5dL1Jvb3QgMTEgMCBSL1NpemUgMTM+PgpzdGFydHhyZWYKOTk2NgolJUVPRgo=</ns6:ValorBinario>
        <ns6:NombreFormato>PDF</ns6:NombreFormato>
    </ns7:VisualizacionIndice>
</ns7:expediente>

    <ns9:metadatosAdicionales>
        <ns8:MetadatoAdicional tipo="string" nombre="eEMGDE3.1.Nombre.NombreNatural">
            <ns8:valor xsi:type="xs:string" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">61561C: Expediente Edu meu</ns8:valor>
        </ns8:MetadatoAdicional>
        <ns8:MetadatoAdicional tipo="string" nombre="eEMDGE.22.3.Clasificacion.TipoClasificacion">
            <ns8:valor xsi:type="xs:string" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Funcional</ns8:valor>
        </ns8:MetadatoAdicional>
    </ns9:metadatosAdicionales>
</insidews:expediente>           

OJO: He probado con esto y funciona también

autofirma sign  -i provaAFirmar.xml -o provaAFirmar.signed.xml \
 -format xades -store pkcs12:Certificado.p12 -alias mialias -password micontraseña \
 -config "format=XAdES Enveloped\n \
          nodeToSign=EXP_INDICE_CONTENIDOES_L01462384_2022_EXP_61561C\n \
          insertEnvelopedSignatureOnNodeByXPath = //*[local-name()='FirmaConCertificado']"

9. Firma de expedientes. Firmar de la parte de contenido del fichero índice de expedientes (<ns2:IndiceContenido Id="EXP_INDICE_CONTENIDOES....) al que le tenemos que indicar el id. El formato a firmar es XadES Enveloped y descargamos la firma en otra etiqueta xml que contiene namespaces. Pide el certificado para firmar

Aqui le indicamos el parámetro -certgui para que elija el certificado por parte del firmante

autofirma sign -certgui -i provaAFirmar.xml -o provaAFirmar.signed.xml \
 -format xades 
 -config "format=XAdES Enveloped\n \
          nodeToSign=EXP_INDICE_CONTENIDOES_L01462384_2022_EXP_61561C\n \
          insertEnvelopedSignatureOnNodeByXPath = //*[local-name()='FirmaConCertificado']"

10. Manual de opciones de Autofirma

Este manual es una pasada.
y este otro es la actualización
y para la version 1.9 está este otro




miércoles, 20 de marzo de 2019

Actualización de Ubuntu 16.04 a 18.04. Problemas

1. No funciona Postgres !!

Hago lo siguiente:

1. Verifico lo que dice en stackoverflow que los ficheros progres del directorio data (postgresql.conf y pg_hba.conf) es decir que el primer fichero tenga una entrada: listen_addresses = '*'  y el segundo que tenga  host  all  all  all  md5

2. Ejecuto pg_isready y sale localhost:5432 - no response

3. Compruebo con ps -ef | grep postgres que las lineas en amarillo no salen!


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
postgres  1413     1  0 12:20 ?        00:00:00 /opt/PostgreSQL/9.6/bin/postgres -D /opt/PostgreSQL/9.6/data
postgres  1438     1  0 12:20 ?        00:00:00 /lib/systemd/systemd --user
postgres  1439  1438  0 12:20 ?        00:00:00 (sd-pam)
postgres  1579     1  0 12:20 ?        00:00:00 /opt/PgBouncer/bin/pgbouncer -d /opt/PgBouncer/share/pgbouncer.ini
postgres  1632  1413  0 12:20 ?        00:00:00 postgres: logger process   
postgres  1639  1413  0 12:20 ?        00:00:00 postgres: checkpointer process   
postgres  1640  1413  0 12:20 ?        00:00:00 postgres: writer process   
postgres  1641  1413  0 12:20 ?        00:00:00 postgres: wal writer process   
postgres  1642  1413  0 12:20 ?        00:00:00 postgres: autovacuum launcher process   
postgres  1643  1413  0 12:20 ?        00:00:00 postgres: stats collector process   
postgres  4446  1413  0 12:23 ?        00:00:00 postgres: ayto openweb 127.0.0.1(22282) idle
postgres  4606  1413  0 12:26 ?        00:00:03 postgres: postgres postgres 127.0.0.1(22508) idle
eduard    6861  4186  0 12:46 pts/1    00:00:00 grep --color=auto postgres

4. Compruebo con sudo netstat -ltpn | grep 5432 que no sale ninguna línea (cunado deberían salir algo parecido a esto:


1
2
tcp        0      0 0.0.0.0:5432            0.0.0.0:*               LISTEN      1413/postgres       
tcp6       0      0 :::5432                 :::*                    LISTEN      1413/postgres       

5. Listo los servicios con este comando :

systemctl list-units --all --type=service --no-pager

Y observo que el servicio de postgres-9.6 ha intentado arrancar y ha fallado!!

6. Hago lo que se dice en stackoverflow y me da una pista del error:

data directory “/opt/PostgreSQL/9.6/data” has group or world access Permissions should be u=rwx (0700)

y cambiando los permisos de dicho directorio con

chmod 700 -R opt/PostgreSQL/9.6/data

y rearrancando se solucionó el maldito problema

2. No funciona el crontab!!

Tengo unos ejecutables java que no arrancan, y es debido a que al instalar la nueva versión, se han retocado las versiones de java y las rutas de java y javac no coinciden.

Arreglar el crontab con "crontab -e" para que apunte a la ruta correcta del ejecutabe java



1
*/60 08-16 * * 1-5 /usr/lib/jvm/java-10-openjdk-amd64/bin/java -jar /home/eduard/ProgramesMeus/CRON-TAB/ORVE_2019_V1/MiJar.jar

viernes, 18 de enero de 2019

Escalar imagenes, comprimir, transparencias etc.

1. Escalar /reducir imágenes


Con image-resize es muy fácil. Basta con cargar la imagen e indicar el porcentaje de reducción. Se puede dar distintos porcentajes y luego se descargan todas las imágenes generadas.



2. Optimizar-comprimir imágenes


Con Image compressor se pueden comprimir rápidamente. Se pueden elegir varias y luego descargarlas. Hay muchos anuncios pero va bien



3. Crear zonas transparentes 


Para ello utilizamos LunaPic (a parte realiza muchas mas acciones) . Le indicamos la zona a meter transparencia y ya está. Pero las imágenes crecen mucho de tamaño y hay que optimizarlas.




martes, 20 de noviembre de 2018

Acceder a recursos de una red windows desde Ubuntu con Samba. Mostrar en Nautilus (1)

Para realiar esta entrada he tomado de ayuda este link del Taller del Bit al que agradezco mucho. Veamos los pasos a seguir

0. Crear un usuario en Linux y assignarle un password

sudo useradd ximodante

sudo passwd ximodante

1. Crear un usuario de samba (que ya debe de estar creado en Ubuntu previamente. En este caso ximodante)

sudo smbpasswd -a ximodante

2. En principio, dicho usuario tendría que estar en el dominio de windows, por tanto hay que proporcionarle la misma contraseña que windows. Para ello :

sudo smbpasswd ximodante

donde nos pide una contraseña nueva y que la confirmemos

2.1 NUEVO 2020-12-11: Tenermos que buscar el workgroup. Parece ser que ahora el wotkgroup es el dominio, por tanto, desde linux, para buscar el dominio hacemos:

nslookup IP_SERVIDOR

Y nos devuelve

XXX.XXX.168.192.in-addr.arpa name = myserver.corporacion.grupo.

observamos que la IP la ha dado en orden inverso, y que el doiminio es corporacion.grupo, pero parece ser que el WORKGROUP es la primera parte del dominio, o sea "corporacion"

3. Queremos ver los recursos compartidos de un servidor windows. Supongamos que en windows tenemos el workgroup "CORPORACION". Para ver los recursos compartidos de un servidor (que idenificamos con su IP) que puede acceder el usuario "ximodante" tecleamos (parece ser que pasa a mayúsculas el dominio!)

smbclient -L IP_Servidor -U CORPORACION/ximodante

y nos pide la contraseña de dicho usuario y a continuación nos muestra los recursos compartidos

4. Si queremos montar un disco remoto en nuestro ordenador, primeramente tenemos que crear un punto directorio que servirá de punto de montaje, por ejemplo "/mnt/disco_remoto_c". En este caso debemos tener permisos de superusuario



sudo mkdir /mnt/disco_remoto_c

------Esto que viene a continuacion YA NO FUNCIONA !!!!!-------

A continuación realizamos el montaje

sudo mount -o username=ximodante //IP_Servidor/c$ /mnt/disco_remoto_c

Y nos pide la contraseña del usuario en el equipo remoto, a la que haya que facilitar. Si entramos en el "nautilus" al directorio mnt, podemos ver que dicha carpeta nos accede al recurso compartido del servidor remoto en Windows.

5. Si por algún motivo, se cambia la contraseña en el entorno Windows, debemos de cambiar la contraseña del mismo usuario de samba. Pero también se puede volver a ejecutar el comando anterior

sudo mount -o username=ximodante //IP_Servidor/c$ /mnt/disco_remoto_c

y proporcionarle la contraseña del usuario en el entorno del servidor remoto Windows cuando nos la pida.


también se puede montar un directorio

sudo mount -o username=ximodante //IP_Servidor/c$/directorio /mnt/disco_remoto_c

6. Si queremos que en "Nautilus" aparezca en los marcadores de la izquierda (panel de navegación), basta que entremos en dicha carpeta por ejemplo en "/mnt/disco_remoto_c" y una vez dentro, le damos a la secuencia Crtl-d y nos aparece en el panel de navegación a la izquierda

7. Si queremos desmontar el punto de montaje hacemos

sudo umount /mnt/disco_remoto_c

8. Según Jim Fell se puede montar así, y en mi caso va en servidores que se niegan a ser conectados con Samba

sudo mount -t cifs -o "domain=CORPORACION,username=myuser,password=mypassword,sec=ntlm,vers=1.0" //192.168.x.x/c$ /mnt/disco_remoto_c

OJO; No dejar espacios en las comas!!!!!


8. Si se quiere utilizar la contraseña de root en el script como dice Jesse Webb y teniendo cuidado con la seguridad de las contraseñas

echo 'myPassword' | sudo -S mount -t cifs -o "domain=CORPORACION,username=myuser,password=mypassword,sec=ntlm,vers=1.0" //192.168.x.x/c$ /mnt/disco_remoto_c

PROBLEMA GORDO

Parece ser que ¡¡¡¡¡ solo tengo acceso a solo lectura !!!

Ahora me instalo el konqueror 

y si le pongo a la direccion de búsqueda:

smb://miusuario:mipassword@192.168.xxx.xxx/carpeta 

ya puedo acceder a lectura y escritura !!!


Posible solución: Acceder con "sudo"  por ejemplo "sudo gedit nombre_fichero.text"


lunes, 5 de noviembre de 2018

Crear jar ejecutable con Maven que incluya recursos. Los jars en librerias a parte (2)

0. Introducción

Ya existe un post anterior que cubre este tema. Pero creo conveniente crear uno mas simple y actualizado a java 10 (tal vez 11).

Cuando tenemos recursos en la carpeta src/main/resources como por ejemplo el famoso fichero de definición de entidades JPA "persistence.xml"  , y le damos FileExport as Java Runnable, no recoge bien la localización de los ficheros de recursos.

Parea ello optamos por la solución de Crunchify adaptándola a nuesto proyecto.

Lo que nos insteresa es el código que aparece después de definir las dependencias (<dependencies>) del código del fichero pom.xml

Hay que destacar las siguientes versiones para que compatibilicen con Java 10

-Java : versión 10 en ${java.version} definida en <properties> y dispuesta en <source> y <target> del maven-compliler-plugin
-maven-compiler-plugin: versión 3.8.0
-maven-resources-plugin: versión 3.1.0
-maven-dependency-plugin: versión 3.1.1
-maven-jar-plugin: versión 3.1.1

También hay que tener en cuenta que

- Se genera la carpeta MiCarpeta que recibe el resultado del build. Se define en mave-resources-plugin en <outputDirectory>

- Se genera un jar llamado MiJar que se define en <finalName> del maven-plugin-jar donde se le indica también la carpeta: <finalName>MiCarpeta/MiJar</finalName>

-Se genera la carpeta lib dentro de MiCarpeta. Se define en maven-dependency-plugin en <outputDirectory>

- Hay que indicar el nombre completo de la clase a ejecutar y por tanto debe de tener un "main". Se indica en maven-jar-plugin en <mainClass>


  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
<project>
  <!-- modelVersion, groupID.. -->
  <properties>
    <!-- otras propiedades -->
    <java.version>10</java.version>
  </properties>
  
  <dependencies>
    <dependency>
        <!-- ....... -->
    </dependency>
    <!-- mas dependencias -->
  </dependencies>
  
  
  <!-- COMPILER PLUGIN -->
  <!-- Esta si que va bien  http://crunchify.com/how-to-create-build-java-project-including-all-dependencies-using-maven-maven-resources-maven-dependency-maven-jar-plugin-tutorial/
  -->
  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
          <configuration>
            <!-- release>10</release -->
            <source>${java.version}</source>
            <target>${java.version}</target>
            <showWarnings>true</showWarnings>
            <showDeprecation>true</showDeprecation>
          </configuration>
          
        </plugin>
      </plugins>
    </pluginManagement>
 
    <plugins>
      <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <version>3.1.0</version>
        <executions>
          <execution>
            <id>copy-resources</id>
            <phase>validate</phase>
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <configuration>
              <outputDirectory>${basedir}/target/MiCarpeta</outputDirectory>
              <resources>
                <resource>
                  <directory>resources</directory>
                  <filtering>true</filtering>
                </resource>
              </resources>
            </configuration>
          </execution>
        </executions>
      </plugin>
 
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>3.1.1</version>
        <executions>
          <execution>
            <id>copy-dependencies</id>
            <phase>prepare-package</phase>
            <goals>
              <goal>copy-dependencies</goal>
            </goals>
            <configuration>
              <outputDirectory>${project.build.directory}/MiCarpeta/lib</outputDirectory>
              <overWriteReleases>false</overWriteReleases>
              <overWriteSnapshots>false</overWriteSnapshots>
              <overWriteIfNewer>true</overWriteIfNewer>
            </configuration>
          </execution>
        </executions>
      </plugin>
   
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>3.1.1</version>
        <configuration>
          <archive>
            <manifest>
              <addClasspath>true</addClasspath>
              <classpathPrefix>lib/</classpathPrefix>
              <mainClass>ximodante.orve.ORVETest</mainClass>
            </manifest>
            <manifestEntries>
              <Class-Path>.</Class-Path>
            </manifestEntries>
          </archive>
 
          <finalName>MiCarpeta/MiJar</finalName>
        </configuration>
      </plugin>
    </plugins>
  
  </build>
  
</project>


Para obtener el jar hacemos click derecho sobre el proyecto- Run AS- 4 Maven Build y seleccionamos clean install en el apartado goals como se indica en la imagen.




Ahora solo queda copiar la carpeta MiCarpeta (que está dentro de target)  a un equipo que tenga instalada una versión reciente de java y a funcionar.

lunes, 10 de septiembre de 2018

Gexflow de Teralco: Instalar el add-on de libre office en Linux

1. Introducción

Queremos instalar el add-on de Libreoffice en una máquina Ubuntu

Para ello debemos de tener:


  • Java versión 1.8: No sirven versiones posteriores como Java 9, 10 etc.
  • LibreOffice hasta la versión 5.2 
  • LibreOffice langpack y helppack para lenguaje español versión 5.2 
  • Tener el programa "soffice" en el PATH
  • Instalar el add-on

2. Instalar y apuntar en el path a Java 1.8.x

En un post anterior, en concreto en el de autofirma, explicamos como instalar y apuntar a Oracle Java 1.8.x. 

3. Instalar el LibreOffice 5.2

Primeramente debemos eliminar todas las versiones de LibreOffice que tengamos, para ello tal como se indica en este enlace hacemos:


sudo apt-get remove --purge libreoffice*
sudo apt-get clean
sudo apt-get autoremove

Ahora hay que descargar la versión 5.2 de LibreOffice

Para ello hay que ir a la página de LibreOffice de versiones antiguas y descargarlo. Para ello yo he buscado la versión 5.2.6.2, que es la que está certificada y he descargado el fichero:

LibreOffice_5.2.6.2_Linux_x86-64_deb.tar.gz

que lo he descomprimido y en la subcarpeta DEBS hay un montón de ficheros con extensión ".deb"

POSTADA: Parece ser que funciona en las versiones nuevas también... pero tiene que ser de 32 bits 

Y ejecutamos:


sudo dpkg -i *.deb

Y se van instalando todos los paquetes

4. Instalar el LibreOffice 5.2 langpack y helppack

Es obligatorio instalar el langpack y helppack para lenguaje español. Para ello, igual que antes se descargan los ficheros:

LibreOffice_5.2.6.2_Linux_x86-64_deb_langpack_es.tar.gz
LibreOffice_5.2.6.2_Linux_x86-64_deb.helppack_es.tar.gz

Primeramente debemos instalar el langpack y después el helppack ya que si invertimos el orden, el paquete helppack no se puede instalar porque langpack conforma una dependencia de helppack.

Y actuamos igual, en la subcarpeta DEBS de cada carpeta se ejecuta:

sudo dpkg -i *.deb

Y se van instalando todos los paquetes

5. Arreglar el $PATH

Primeramente debemos saber donde está localizado soffice. Para ello tecleamos:


cd /
sudo find . -name soffice -print


A mi me devuelve

/opt/libreoffice5.2/program

He creado el siguiente fichero

/etc/profile.d/mi_environment.sh

y le he indicado donde encontrar las rutas a ejecutables que me interesan. 

en concreto tengo


export LIBREOFFICE_5_2="/opt/libreoffice5.2/program"

export PATH="$PATH:$LIBREOFFICE_5_2"

Ahora cuando reinicie la máquina hemos de comprobar que nos coge la ruta, ejecutando en una ventana de shell:

echo $PATH 

Y debe aparecer la ruta que le hemos puesto a "soffice".

6. Configurar Libreoffice para que el interfaz de usuario sea español.

Si aparece en otro idioma, seguramente NO VA A FUNCIONAR.

Para ello entramos en Writer y en Herramientas (Tools) - Opciones (Options) -Configuracion de Idiomas (Language settings)- Idioma (language) - Interfaz de usuario (User Interface) debemos seleccionar Spanish (Spain). Te pide reiniciar OpenOffice y le decimos que si.



6. Verificar que OpenOffice apunta a Oracle Java 1.8.X

Ahora en Herramientas (Tools) - Opciones (Options) - Avanzado (Advanced),  elegimos el Oracle Java 1.8.X (en este caso 1.8.0_181)


7. Instalar el add-on

Hay que verificar que el programa tiene ahora los menús en español.

Debemos tener localizado el fichero de la extensión. Y ejecutamos libreoffice writer y en Herramientas (Tools)- Gestor de Extensiones (Extension Manager) y buscamos donde está localizado el fichero y lo agregamos, quedando


y en el botón Anadir buscamos la ruta de la extensión y la añadimos




Y nos pide que reiniciemos el LibreOffice.

Y tras reiniciar podemos ver el comlemento.

Si no lo vemos, vamos a Ver (view). Barra de Herramientas (Toolbar) y activar el "Complemento 2".

Y tendríamos que poderlo ver.



8. Otras versiones de LibreOffice

Me he descargado la versión 6.1.0.3 y he seguido los mismos pasos y Eureka!! Funciona también.

martes, 4 de septiembre de 2018