# 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 ```bash cp micertificado.p12 ./data/certs/ ``` ### 2. Actualizar config.yml ```yaml 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: ```bash 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 ```bash # Detener API taskkill /F /IM main.exe # Iniciar go run main.go ``` ### 5. Probar ```bash 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: ```powershell 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 - FNMT: https://www.fnmt.es - Certificados válidos VeriFactu: https://www.sede.fnmt.gob.es/preguntas-frecuentes/certificado-de-representante/-/asset_publisher/eIal9z2VE0Kb/content/certificados-electr%C3%B3nicos-v%C3%A1lidos-para-el-sistema-veri*factu - Certificado entidad sin personalidad jurídica: https://www.sede.fnmt.gob.es/certificados/certificado-de-representante/entidad-sin-personalidad-juridica - Portal AEAT Pruebas: https://preportal.aeat.es - Sede AEAT: https://sede.agenciatributaria.gob.es