Especificación AEAT para consulta de certificados revocados (YCAESTEC)


En el marco de la normativa de la AEAT sobre aceptación de certificados electrónicos, la agencia ha definido un protocolo muy sencillo (denominado ycaestec por ser el nombre de la página html en la que se describe).

La Y no se de donde sale, aunque es la misma letra con la que comienza YCAREQUI, la descripción de requisitos de los certificados que acepta la AEAT (CAREQUI puede significar Requisitos para las CA), de modo que YCAESTEC puede significar Especificaciones Técnicas de las CA.

Especificaciones técnicas del servicio Web de actualización de certificados revocados

El servicio deberá estar basado en el protocolo SOAP 1.0. La A.E.A.T. accederá a este servicio como cliente solicitando los certificados revocados a partir de una fecha y hora. La autoridad de certificación devolverá una lista con los certificados revocados o el código que indique que no se han producido revocaciones desde la fecha y hora solicitada.

Descripción del servicio.

Nombre

El nombre del servicio será serPubCR (Servicio Público de Certificados Revocados).

Tipos

Se define un nuevo tipo, ArrayOfArrayOf_xsd_string, fuera de los definidos en la especificación de XML Schema, que SOAP adopta. Este tipo será un array de cadenas de dos dimensiones (xsd:Array[][]) la primera dimensión contendrá la fecha de revocación (Formato ISO-8601 con las restricciones de W3C descritas en http://www.w3.org/TR/NOTE-datetime y la granularidad 6 (fecha completa con horas, minutos, segundos y décimas de segundo, e.g 2003-05-15T23:11:32.45) y la segunda contendrá el número de serie del certificado revocado (Este número de serie se expresará en notación hexadecimal, no debiendo superar los 32 caracteres hexadecimales). El array deberá contener al final del mismo la cadena “FINAL” en las dos dimensiones.

Este tipo se utiliza en el mensaje de respuesta de la operación desdeFecha del servicio.

Mensajes

Estructura del mensaje de petición:

  • Nombre, desdeFechaRequest: Obtención de los certificados revocados a partir de una fecha, con dos parámetros:
    • In0 (xsd:string) : Autoridad de certificación a la que se envía el mensaje.
    • In1 (xsd:dateTime) : Fecha y hora a partir de la cual se desean los certificados revocados. Formato ISO-8601 con las restricciones de W3C descritas en http://www.w3.org/TR/NOTE-datetime y la granularidad 6 (fecha completa con horas, minutos, segundos y décimas de segundo, e.g 2003-05-15T23:11:32.45)

Estructura del mensaje de respuesta

  • Nombre, desdeFechaResponse: Consta de dos campos, uno con el nombre de la AC que emite la respuesta y otro con la lista de certificados revocados según el tipo ArrayOfArrayOf_xsd_string definido anteriormente.
    • Out0 (xsd:String) : Autoridad de certificación que devuelve la respuesta.
    • Out1 (ArrayOfArrayOf_xsd_string) : Lista de los certificados revocados desde la fecha y hora indicada en el mensaje de petición.

Operaciones

Este servicio se compone de una única operación.

  • Nombre desdeFecha: que se compone de los dos mensajes siguientes:
    • Mensaje de petición: desdeFechaRequest
    • Mensaje de respuesta: desdeFechaResponse

Enlaces

Todas las operaciones utilizarán el formato RPC de SOAP. El cuerpo (body) de la petición SOAP deberá incluir un elemento que indique el tipo de función (operación) a ejecutar y otros elementos para los parámetros de la función. Las respuestas a su vez deberán tener un elemento que emule la función de petición e incluya los valores de retorno. A su vez el mensaje SOAP se encapsulará en un mensaje HTTPS

Todas las operaciones tendrán como espacio de nombres ‘urn:dit:soapservices:serPubCR’ y utilizará la codificación SOAP http://schemas.xmlsoap.org/soap/encoding para llamadas remotas a procedimientos (RPC).

Ejemplos de mensajes SOAP

Mensaje de petición

<?xml version="1.0" encoding="IS0-8859-1"?>
<SOAP-ENV:Envelope
	xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Body>
	<ns1:desdeFecha xmlns:ns1="urn:dit:soapservices:serPubCR"
		xmlns:ns2="http://schemas.xmlsoap.org/soap/encoding/"
		SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
		<in0 xsi:type="xsd:string">CAGVA</in0>
		<in1 xsi:type="xsd:date">2003-05-15T23:00:03.23</in1>
	</ns1:desdeFecha>
</SOAP-ENV:Body>
</SOAP-env:Envelope>

Mensaje de respuesta

(Respuesta correcta)

<?xml version="1.0" encoding="ISO-8859-1"?>
<SOAP-ENV:Envelope
	xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Body>
	<ns1:desdeFechaResponse xmlns:ns1="urn:dit:soapservices:serPubCR"
		SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
	<return>
	<out0 xsi:type="soapenc:String>CAGVA</out0>
	<out1 xsi:type="soapenc:Array"
		soapenc:arrayType="xsd:string[][193]"
		xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
		<item soapenc:arrayType="xsd:string[2]">
			<item>
			2003-06-16T09:29:27.00
			</item>
			<item>
			25B20688E
			</item>
		</item>
		<item soapenc:arrayType="xsd:string[2]">
			<item>
			2003-06-23T09:29:27.00
			</item>
			<item>
			25B206890
			</item>
		</item>
               .
               .
               .
		<item soapenc:arrayType="xsd:string[2]">
			<item>
			FINAL
			</item>
			<item>
			FINAL
			</item>
		</item>
	</out1>
	</return>
	</ns1:desdeFechaResponse>
</SOAP-ENV:Body>
</SOAP-env:Envelope>

(Respuesta errónea)

<?xml version="1.0" encoding="ISO-8859-1"?>
<SOAP-ENV:Envelope
	xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Body>
	<SOAP-ENV:Fault>
		<faultcode xsi:type="xsd:string">SOAP-ENV:Client</faultcode>
		<faultstring xsi:type="xsd:string>
			Error en el formato de la fecha. Formato válido 
			ISO-8601
		</faultstring>
	</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

NOTAS

1.- Documento WSDL de descripción del servicio SOAP.

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNameSpace="urn:dit:soapservices:serPubCR"
	xmlns:impl="urn:dit:soapservices:serPubCR"
	xmlns:soapenc="http://schemas.xmlsoap.org/soap/soapencoding/"
	xmlns:wsdlsoap="http://schemas.xmlsoap.org/wdslsoap/"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	xmlns="http://schemas.xmlsoap.org/wsdl/">

<wsdl:types>
	<schema xmlns="http://www.w3.org/2001/XMLSchema/"
		targetNameSpace="urn:dit:soapservices:serPubCR">
		<import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
		<complexType name="ArrayOfArrayOf_xsd_string">
			<complexContent>
				<restriction base="soapenc:Array">
					<attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:string[][]" />
				</restriction>
			</complexContent>
		</complexType>
	</schema>
</wsdl:types>

<wsdl:message name="desdeFechaRequest" >
	<wsdl:part name="in0" type="xsd:string" />
	<wsdl:part name="in1" type="xsd:dateTime" />
</wsdl:message>
<wsdl:message name="desdeFechaResponse">
	<wsdl:part name="out0" type="xsd:string" />
	<wsdl:part name="out1" type="impl:ArrayOfArrayOf_xsd_string" />
</wsdl:message>

<wsdl:portType name="desdeFecha_servPubCR">
	<operation name="desdeFecha">
		<input name="desdeFechaRequest" message="impl:desdeFechaRequest" />
		<output name="desdeFechaResponse" message="impl:desdeFechaResponse" />
	</operation>
</wsdl:portType>

<wsdl:binding name="serPubCR_Bind" type="impl:desdeFecha_servPubCR">
	<wdslsoap:binding stype="rpc"  transport="http://schemas.xmlsoap.org/soap/https" />
	<wsdl:operation name="desdeFecha" soapAction="">
		<wsdl:input name="desdeFechaRequest">
			<wsdlsoap:body use="encoded" 
				encodingStyle="http://schemas.xlsoap.org/soap/encoding/"
				namespace="urn:dit:soapservices:serPubCR" />
		</wsdl:input>
		<wsdl:output name="desdeFechaResponse">
			<wsdlsoap:body use="encoded" 
				encodingStyle="http://schemas.xlsoap.org/soap/encoding/"
				namespace="urn:dit:soapservices:serPubCR" />
		</wsdl:output>
	</wsdl:operation>
</wsdl:binding>

<wsdl:service name="serPubCR">
	<wsdl:port name="desdeFecha_servPubCR"
		binding="impl:serPubCR_Bind">
		<wsdlsoap:address
			localtion="http://..../.../.../serPubCR" />
	</wsdl:port>
</wsdl:service>

</wsdl:definitions>

2.- Cabecera SOAPAction

No deberá ser obligatoria y si se utiliza, podrá ir a blanco.

One thought on “Especificación AEAT para consulta de certificados revocados (YCAESTEC)

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s