reingart/pyafipws

Generación automática de certificados

dantebarba opened this issue · 3 comments

Estamos buscando una solución para la renovación automática de certificados, debido a que se vencen al año y es necesario renovarlos manualmente.

Quería saber si la librería lo permite, no logro encontrar la referencia en la documentación.

Gracias

Hola @dantebarba si, se puede automatizar la generación de CSR, ver: Métodos WSAA para Certificados

Por linea de comando, el ejemplo sería:

$ python wsaa.py --crear_pedido_cert 20267565393 MARIANO pyafipws
Encodign in UTF-8
Longitud clave 2048 (bits)
Se crearon los archivos:
clave_privada_20267565393_201903041858.key
pedido_cert_20267565393_201903041858.csr

La parte final debe hacerse por Clave Fiscal AFIP (subir el CSR y descargar el CRT firmado), lo que no se puede automatizar por ahora (facilmente, hay algunos workarounds para experimentar...)

Una vez obtenido el CRT, se puede analizar para verificar la fecha de vencimiento (atributo wsaa.Caducidad):

Por linea de comando, el ejemplo sería:

$ python wsaa.py --analizar reingart.crt
Encodign in UTF-8
Usando CRT=reingart.crt KEY=reingart.key URL=https://wsaahomo.afip.gov.ar/ws/services/LoginCms SERVICE=wsfe TTL=36000
WSAA Version 2.11c  False
CN=reingart2017/serialNumber=CUIT 20267565393
2019-07-13 15:24:35+00:00
CN=Computadores Test, O=AFIP, C=AR
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 1038432389097065538 (0xe6940c18b640c42)
    Signature Algorithm: sha512WithRSAEncryption
        Issuer: CN=Computadores Test, O=AFIP, C=AR
        Validity
            Not Before: Jul 13 15:24:35 2017 GMT
            Not After : Jul 13 15:24:35 2019 GMT
        Subject: CN=reingart2017/serialNumber=CUIT 20267565393
...

NOTA: no es obligatorio llamar al script por linea de comando; todos los métodos son accesibles desde Python (u otros lenguajes) de manera "programática"

Como ejercicio inicial para el GSoC se podría:

"La parte final debe hacerse por Clave Fiscal AFIP (subir el CSR y descargar el CRT firmado), lo que   no se puede automatizar por ahora (facilmente, hay algunos workarounds para experimentar...)"

Esta parte es justamente la que necesitaríamos automatizar, ¿Cuales serían esos workarounds experimentales que mencionas?. Se me ocurrió parsear la pagina usando BeautifulSoup pero veo complicado realizar todo el camino de login hasta llegar a la pantalla.