Dejando aparte que el servicio tiene mucho margen de mejora, especialmente en el tratamiento de los errores, a nivel técnico uno de los puntos más destacables es que se hace uso de una autenticación basada en certificados digitales.
Aunque de principio puede asustar un poco, la verdad es que usar certificados digitales para el intercambio en Java no tiene ninguna complejidad técnica, basta con definir como parámetros de la JVM la ruta absoluta donde se encuentra el
O si se prefiere hacer en el código, basta con añadir a los parámetros inicio de la JVM las siguientes entradas:
-Djavax.net.ssl.keystore=/ruta/al/archivo/certificado
-Djavax.net.ssl.keystorePassword=password
También es posible asignar estos valores en tiempo de ejecución,
System.setProperty("javax.net.ssl.keystore", "/ruta/al/archivo/certificado");
System.setProperty("javax.net.ssl.keystorePassword", "password");
Como apunte el certificado a usar debe contener tanto la clave pública como la privada, habitualmente llevan la extensión pxf o p12. Además en este caso como la AEAT utiliza para el handshake un certificado "confiable" para Java, no es necesario definir el almacén de certificado de confianza (truststore).
Personamente no me gusta dejar los certificados "sueltos" y si consultáis la web lo habitual es que ele certificado esté almacenado en una "keystore", que básicamente es un contenedor de certificados protegido por contraseña. La herramienta keytool de Java permite tanto la creación de los keystore y la gestión de los mismos. El mayor problema de keytool es que es una herramienta muy potente basada en línea de comando y por tanto tiene un montón de opciones y combinaciones, por lo que o tienes plantillas salvadas o estás consultando internet.
Una opción para el manejo de los keystores es KeyStore Explorer, permite la creación y la gestión de los keystores de forma muy sencilla, es "open source" y cuenta con versiones tanto para Windows, Mac y Linux.
No hay comentarios:
Publicar un comentario