VerifactuMidAPI/documentacion/certificado_pruebas.md

3.4 KiB

Obtener Certificado de Pruebas AEAT

Introducción

Para enviar facturas al entorno de pruebas de VeriFactu (no en producción), necesitas un certificado digital de pruebas registrado en el sistema de la AEAT.

Opciones de Certificados

Opción 1: Certificado FNMT (Fábrica Nacional de Moneda y Timbre)

Es el más común para empresas y autónomos en España.

Pasos:

  1. Ir a https://www.fnmt.es/consultas-y-resolucion-de-incidentes/centros-de-emision-y-oficinas
  2. Buscar una oficina cercana FNMT
  3. Acudir presencialmente con DNI
  4. Solicitar certificado de persona física
  5. Te lo emiten en el acto

Opción 2: Certificado de la AEAT (solo pruebas)

La AEAT ofrece certificados de pruebas:

Pasos:

  1. Ir a https://preportal.aeat.es
  2. Registro como usuario
  3. Solicitar certificado de prueba
  4. Descargar archivo .p12

Nota: Los certificados de prueba de la AEAT suelen tener validez limitada.

Opción 3: Certificado personal (prod)

Si ya tienes tu certificado personal (el que usaste antes), puede que funcione en producción.

Verificar:

  1. ¿Está vigente? (no expired)
  2. ¿Es cualificado? (firmado por autoridad reconocida)

Registrar Nuevo Certificado

Una vez tengas el archivo .p12:

1. Copiar a una ubicación segura

cp micertificado.p12 ./data/certs/

2. Actualizar config.yml

certificates:
  storage_path: ./data/certs/
  cert_file: ./data/certs/nuevo_cert.p12
  cert_password: TU_CONTRASEÑA

3. Convertir certificado

La API necesita el certificado en formato PEM:

python convert_cert.py ./data/certs/nuevo_cert.p12 TU_CONTRASEÑA

Esto genera:

  • cert_key.pem (clave privada)
  • cert_cert.pem (certificado público)

4. Reiniciar API

# Detener API
taskkill /F /IM main.exe

# Iniciar
go run main.go

5. Probar

python test_invoice.py

Estructura de Directorios

VerifactuMidAPI/
├── data/
│   └── certs/
│       ├── personal.p12      # Tu certificado
│       ├── cert_key.pem     # Generado automáticamente
│       └── cert_cert.pem   # Generado automáticamente
└── config.yml              # Configuración

Verificar Certificado

Para verificar que el certificado es válido:

openssl pkcs12 -in .\data\certs\personal.p12 -passin pass:TU_PASS -nokeys -clcerts | openssl x509 -noout -dates

Muestra:

  • Not Before: fecha de inicio de validez
  • Not After: fecha de caducidad

Problemas Comunes

"403 Forbidden"

  • El certificado no está autorizado en el entorno de pruebas
  • O el certificado es de producción y estás en test

"Certificate expired"

  • El certificado ha caducado
  • Solicitar uno nuevo

"Invalid password"

  • La contraseña del .p12 es incorrecta

"tls: failed to find any PEM data"

  • Error al convertir el certificado
  • Ejecutar python convert_cert.py manualmente para ver el error

Siguientes Pasos

  1. Obtener certificado de pruebas FNMT
  2. Registrar en la API
  3. Probar con python test_invoice.py
  4. Verificar que devuelve estado "Correcto" (no "Correcto (local)")

Recursos