@firma es una plataforma de validación y firma electrónica multi-PKI promovida por el gobierno español, que se pone a disposición de las Administraciones Públicas, proporcionando servicios para implementar la validación de certificados y firma electrónica avanzada. Para ello, ofrece una capa de servicios web que ofrecen múltiples funcionalidades. En el caso que nos ocupa se accederá a la validación de certificados. Puede consultar la documentación completa de @Firma en la Zona Segura de la web de la ACCV.
Oasis DSS son protocolos basados en XML que definen una capa de servicios web para la validación de firmas y certificados digitales.
Las peticiones a los servicios web de @Firma 6 serán de 3 tipos en función de la aplicación que realice las mismas:
En cualquiera de los casos si una aplicación quiere hacer uso de los servicios web de @Firma requiere de un identificador que se asigna desde la plataforma. Para obtener un identificador de aplicación deben ponerse en contacto con la ACCV.
A continuación se ofrece el ejemplo que se vio en el apartado de validación de certificados completado con la creación de un objeto para validar certificados desde la plataforma de @Firma 6.
Certificate certificado = ... CertificateValidationService servicio1 = new AFirma6CertificateValidationService( "afirma6.accv.es:8444", "ACCVTEST.MIAPLICACION", null, null, null); List<CertificateValidationService> lServicios = new ArrayList<CertificateValidationService>(); lServicios.add(servicio1); CertificateValidationServiceResult resultadoValidacion = certificado.validate(lServicios); if (resultadoValidacion.getResult() != ValidationResult.RESULT_VALID) { throw new Exception("El certificado no es válido: " + resultadoValidacion); }
En este caso se accede a la plataforma de explotación con el ID de aplicacion 'ACCVTEST.MIAPLICACION' y se accede mediante una llamada sin securizar.
Si hubiera que utilizar usuario y contraseña la creación del objeto quedaría así:
CertificateValidationService servicio1 = new AFirma6CertificateValidationService( "afirma6.accv.es:8444", "ACCVTEST.MIAPLICACION", "miUsuario", "miContraseña", null);
Si la seguridad se establece mediante la firma de las llamadas se indicará la ubicación de un fichero de propiedades WSS4J que contenga la información que permita la firma.
CertificateValidationService servicio1 = new AFirma6CertificateValidationService( "afirma6.accv.es:8444", "ACCVTEST.MIAPLICACION", null, null, "outsecurity_sign.properties");
En el enlace WSS4J puede ver cómo rellenar este fichero. Éste sería un ejemplo:
org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin org.apache.ws.security.crypto.merlin.keystore.type=pkcs12 org.apache.ws.security.crypto.merlin.keystore.password=miKSPassword org.apache.ws.security.crypto.merlin.alias.password=miKSPassword org.apache.ws.security.crypto.merlin.keystore.alias=miKSAlias org.apache.ws.security.crypto.merlin.file=/root/keystores/miKeystoreFirma.p12