Error al autenticar

1,974 views
Skip to first unread message

Octavio Speranza

unread,
Jan 14, 2015, 4:40:24 PM1/14/15
to pyaf...@googlegroups.com
Al querer realizar una factura me da el sig. error:
SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
Cual puede ser el problema?

Gracias

Jorge Correa

unread,
Jan 15, 2015, 2:02:25 PM1/15/15
to pyaf...@googlegroups.com
Hola, a nosotros nos pasa lo mismo desde ayer 14/01, pude comunicarme con mesa de ayuda de afip y me confirmaron que estan ellos con problemas.
Al que pueda aportar info, se agradece!
Gracias

Juan Bagnera

unread,
Jan 15, 2015, 2:19:21 PM1/15/15
to pyaf...@googlegroups.com
Hola, a mi también me esta pasando lo mismo desde ayer.

Saludos, Juan Bagnera.
--
Has recibido este mensaje porque estás suscrito al grupo "PyAfipWs - Factura Electrónica Libre" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a pyafipws+u...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a pyaf...@googlegroups.com.
Visita este grupo en http://groups.google.com/group/pyafipws.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Jorge Correa

unread,
Jan 15, 2015, 2:23:16 PM1/15/15
to pyaf...@googlegroups.com
parte del error que esta tirando es :javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
AxisFault
...............

El miércoles, 14 de enero de 2015, 18:40:24 (UTC-3), Octavio Speranza escribió:

Mariano Reingart

unread,
Jan 15, 2015, 2:38:29 PM1/15/15
to pyaf...@googlegroups.com
Estimados:

Aparentemente el problema de conexión con AFIP es un incidente por el cambio de certificados / SSL.
La buena noticia sería que habilitaron TLS 1.2 (más segura que SSL3), que si mal no recuerdo no se podía utilizar y causaba problemas.

¿Que versión de python y de las bibliotecas relacionadas están usando? 

Pueden ejecutar en una consola:

python
import sys
sys.version
import M2Crypto
M2Crypto.version
import pycurl
pycurl.version

Con curl se puede ver la traza para depuración:

curl https://servicios1.afip.gov.ar --cacert ../conf/afip_ca_info.crt --trace log.txt 
tail log.txt
...
== Info: SSL certificate problem: unable to get local issuer certificate

Con gnutls-cli se puede ver un detalle (y que el certificado no es de confianza por defecto):

Resolving 'servicios1.afip.gov.ar'...
Connecting to '200.1.116.53:443'...
- Certificate type: X.509
 - Got a certificate list of 1 certificates.
 - Certificate[0] info:
  - subject `C=AR,postalCode=1086,ST=Ciudad Autonoma de Buenos Aires,L=Capital Federal,STREET=Hipolito Yrigoyen 370,O=ADMINISTRACION FEDERAL DE INGRESOS PUBLICOS,OU=Issued through ADMINISTRACION FEDERAL DE INGRESOS PUBLICOS E-PKI,OU=InstantSSL,CN=servicios1.afip.gov.ar', issuer `C=GB,ST=Greater Manchester,L=Salford,O=COMODO CA Limited,CN=COMODO RSA Organization Validation Secure Server CA', RSA key 2048 bits, signed using RSA-SHA256, activated `2015-01-09 00:00:00 UTC', expires `2017-01-08 23:59:59 UTC', SHA-1 fingerprint `5cc64ac5af0e85017daf7f67af9be819203b05a5'
- The hostname in the certificate matches 'servicios1.afip.gov.ar'.
- Peer's certificate issuer is unknown
- Peer's certificate is NOT trusted
- Version: TLS1.2
- Key Exchange: RSA
- Cipher: ARCFOUR-128
- MAC: SHA1
- Compression: NULL
- Handshake was completed


Por lo que puedo entender (preliminarmente) es que el servidor solo publica 1 certificado (no publica toda la cadena de certificación), esto hace que teniendo configurado solo el certificado raíz (addtrust en este caso), muchas herramientas y bibliotecas no lo pueden validar correctamente.

Esto se puede reproducir en Ubuntu 14.04 (y posiblemente otros sistemas operativos):

--2015-01-15 00:13:43--  https://servicios1.afip.gov.ar/
Resolviendo servicios1.afip.gov.ar (servicios1.afip.gov.ar)... 200.1.116.53
Conectando con servicios1.afip.gov.ar (servicios1.afip.gov.ar)[200.1.116.53]:443... conectado.
ERROR: no se puede verificar el certificado de servicios1.afip.gov.ar, emitido por “/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Organization Validation Secure Server CA”:
  Imposible verificar localmente la autoridad emisora.
Para conectar inseguramente a servicios1.afip.gov.ar, use `--no-check-certificate'.

En Windows 8.1 PycURL/7.19.5.1 libcurl/7.37.0 WinSSL zlib/1.2.8 también se pueden presentar problemas (dependiendo de las autoridades de certificación cargadas y demás):
  • Excepcion: (35, 'schannel: next InitializeSecurityContext failed: SEC_E_INVALID_TOKEN (0x80090308) - El token proporcionado a la funci\xf3n no es v\xe1lido')
  • Excepcion: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)
  • httplib2.SSLHandshakeError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)

Ademas, el nuevo certificado esta firmado con el algorítmo sha256WithRSAEncryption (ver link con mas info), lo que puede generar los errores con OpenSSL antiguos:
  • error:0D0C50A1:asn1 encoding routines:ASN1_item_verify:unknown message digest algorithm
  • error:0D0890A1:asn1 encoding routines:ASN1_verify:unknown message digest algorithm

Usando solo el certificado del equipo para validar, funciona en Ubuntu 14.04 PycURL/7.19.3 libcurl/7.35.0 GnuTLS/2.12.23 zlib/1.2.8 libidn/1.28 librtmp/2.3
Si se usan todos los certificados de la cadena de certificación, funciona en general en todas las combinaciones de sistemas operativos y bibliotecas.
Con las últimas versiones de GnuTLS 3.3.11 funciona sin necesidad de adjuntar toda la cadena de cetificación (tanto en Windows como Linux).


TL;DR;

Para solucionar el tema:
  1. Utilizar el conjunto de autoridades certificantes, incluyendo toda la cadena para WSFEv1, ver https://code.google.com/p/pyafipws/source/browse/conf/afip_ca_info.crt (ya actulice el repositorio con los certificados necesarios) . Ver parámetro cacert en el método Conectar o en la configuración rece.ini:  http://www.sistemasagiles.com.ar/trac/wiki/ManualPyAfipWs#VerificacióndelCanaldeComunicaciónSeguro
  2. Actualizar las bibliotecas de seguridad  (Python 2.7.9, pycurl 7.19 + GnuTLS 3.3.11 o superior)
Si pueden confirmar que les funciona y/o aportar sugerencias, desde ya son más que bienvenidas

Sds

Octavio Speranza

unread,
Jan 15, 2015, 2:47:27 PM1/15/15
to pyaf...@googlegroups.com
Esta mañana la afip me envio un zip con los 4 certificados que cambiaron, los convine todos formando un nuevo afip_ca_info.crt y con eso pude facturar sin inconvenientes hasta ahora.



El miércoles, 14 de enero de 2015, 18:40:24 (UTC-3), Octavio Speranza escribió:

Juan Martin Villanueva

unread,
Jan 15, 2015, 3:05:23 PM1/15/15
to pyaf...@googlegroups.com
Buenas Tardes, desde ayer que vimos este inconveniente.
El problema es en el certificado del Afip
Pueden obtener el certificado desde la pagina de ellos
https://servicios1.afip.gov.ar/wsfev1/service.asmx

una vez bajado hay que importarlo en nuestro keystore (en nuestro caso
java) con el keytool
esta pagina nos ayudo
http://wiki.genexus.com/commwiki/servlet/hwiki?Consumir+Servicio+web+bajo+Https+en+Java

De esta forma tenemos nuevamente el sistema andando


El día 15 de enero de 2015, 16:23, Jorge Correa
<jorge....@gmail.com> escribió:
> --
> Has recibido este mensaje porque estás suscrito al grupo "PyAfipWs - Factura
> Electrónica Libre" de Grupos de Google.
> Para anular la suscripción a este grupo y dejar de recibir sus mensajes,
> envía un correo electrónico a pyafipws+u...@googlegroups.com.
> Para publicar en este grupo, envía un correo electrónico a
> pyaf...@googlegroups.com.
> Visita este grupo en http://groups.google.com/group/pyafipws.
> Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
Juan Martin Villanueva
IT Ros - Tecnología de Información Rosario
www.itrosario.com
email: j.vill...@itrosario.com
+54-9-341-3634666
----------------------------------------------------------------------
El presente y sus adjuntos son confidenciales y exclusivamente
para el titular de la dirección de correo electrónico destinataria.
No se garantiza la inexistencia de virus, ni la seguridad o exactitud
de la información y anexos. El contenido del mensaje es
responsabilidad exclusiva y excluyente del emisor.
-----------------------------------------------------------------------
Reply all
Reply to author
Forward
0 new messages