139 lines
3.2 KiB
Markdown
139 lines
3.2 KiB
Markdown
# 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
|
|
- Portal AEAT Pruebas: https://preportal.aeat.es
|
|
- Sede AEAT: https://sede.agenciatributaria.gob.es |