Hola, les paso un instructivo que genere de los distintos problemas
que tuve con el afip. Este contiene todos los pasos necesarios para
poder generar los certificados.
Instructivo para conectarse a la afip para poder facturar a travez del
web service.
GENERACION DEL CERTIFICADO
Basicamente, necesita usar el utilitario OpenSSL.
Si tiene acceso a un servidor Unix/Linux, seguramente, ya lo tiene
instalado.
Si s?lo tiene acceso a equipos Windows, puede bajar openSSL de:
"
http://www.slproweb.com/products/Win32OpenSSL.html".
Los pasos a seguir son los siguientes:
- Debe copiar el archivo afip-openssl.cnf (descargarlo desde
http://wswhomo.afip.gov.ar/wsfedocs/afip-openssl.cnf):
En Unix/Linux: /etc/pki/tls/
En Windows: C:\OpenSSL\bin\
- Genere su clave privada (private key) ejecutando desde la l?nea de
comando:
En Unix/Linux: openssl genrsa -out privada 1024
En Windows: C:\OpenSSL\bin>openssl genrsa -out privada 1024
- Genere el CSR (Certificate Signing Request) ejecutando desde la l?
nea de comando:
En Unix/Linux: openssl req -new -key privada -out pedido -config /
etc/pki/tls/afip-openssl.cnf
En Windows: C:\OpenSSL\bin>openssl req -new -key privada -out pedido
-config afip-openssl.cnf
Notas:
En Windows cuenta con la alternativa de poder generar su clave
privada y CSR con solo ejecutar el archivo genera.bat,
que debe descargar desde
http://wswhomo.afip.gov.ar/wsfedocs/genera.bat.zip
y copiar en C:\OpenSSL\bin\.
Cuando complete el cuestionario interactivo, el campo serialNumber
debe tener el siguiente formato:
CUIT xxxxxxxxxxx
donde xxxxxxxxxxx es la CUIT sin guiones.
Los campos obligatorios son (descomentar estas lineas del afip-
openssl.cnf):
countryName (C)
organizationName (O)
commonName (CN)
serialNumber CUIT cuitEmpresaSInGuiones
- De acuerdo a la tecnolog?a que elija utilizar para llevar a cabo el
desarrollo puede llegar a necesitar el
certificado en formato pkcs12 (certificado x509 + clave privada).
Por ejemplo, con el cliente en .NET contribuido.
Para generarlo debe ejecutar desde la l?nea de comando:
openssl pkcs12 -export -inkey privada -in certificado.crt -out
alias.p12 -name "alias"
EL "alias" ES EL SIGNER...................................
En algunos equipos Windows puede llegar a obtener el siguiente
mensaje de error:
"La contrase?a de red especificada no es v?lida".
Este error tiene que ver con el problema de que Windows no entiende
que el pkcs#12 armado con openssl no tiene password.
La soluci?n es importar el certificado al repositorio de Windows
(Control panel/Internet Options/Contents/Certificates).
Luego volver a exportarlo asegurandose de no ponerle password.
Tener en cuenta que debe tildar la opci?n "Marcar esta clave como
exportable".
Pagina de consulta:
http://www.sistemasagiles.com.ar/trac/wiki/PyAfipWs
PASOS EN AL AFIP PARA LA GENERACION DEL CERTIFICADO
Como primera medida, usted deberá tener habilitado 2 servicios de
clave fiscal:
1-"Regimenes de facturación y registración (REAR/RECE/RFI)"
2-"Administración de Certificados Digitales"
- Administrador de Relaciones de Clave Fiscal
- Seleccionar la empresa.
- Nueva Relacion
- Afip
- Servicios Interactivos
- Administración de Certificados Digitales
- Continuar con el alta del certificado.
Estos servicios se habilitan a través del "Administrador de
Relaciones de Clave Fiscal"
Para poder facturar, si es a través de Web Services debera leer el
siguiente link,
para ver si corresponde que usted se empadrone o no:
http://www.afip.gov.ar/fe/
1- En caso que deba empadronarse tendra que hacerlo a traves del
servicio con clave
fiscal "Regímenes de Facturación y Registración (REAR/RECE/RFI)". La
Incorporación al
régimen será publicada en la página "Web" de este Organismo.
Luego deberá crear un punto de venta (a través del mismo servicio de
clave
fiscal) el cual deberá ser informado al momento de efectuar el alta
en el
Régimen de factura electrónica.
Si le quedan mas dudas sobre empadronamiento y puntos de venta,
debera enviar un
mail con su consulta al area normativa (mesa de ayuda del
contribuyente),
escribiendo a
facturael...@afip.gov.ar o telefonicamente al
0810-999-2347
---------------------------------
2- Con el servicio "Administración de Certificados Digitales", le va
a permitir subir
un archivo CSR para luego poder enviarlo a la AFIP. La AFIP le
devolverá otro
archivo (certificado digital) el cual deberá ser descargado e
instalado en donde
vaya a facturar (el mismo certificado lo puede descargar en una o
mas PC).
Para generar su clave privada y su CSR (pedido), recomendamos que
consulte con su
desarrollador de web service. No obstante se adjunta instructivo de
como generarlos:
http://www.afip.gov.ar/genericos/ws/WSAA/cert-req-howto.txt
Para subir el CSR al "Administración de Certificados Digitales",
adjunto
instructivo:
http://www.afip.gov.ar/genericos/ws/WSAA/wsaa_obtener_certificado_produccion.pdf
Como ultimo paso, deberá asociar la empresa con el servicio de Web
Services
que vaya a facturar, y el alias que haya creado en "Administración
de Certificados Digitales".
Para asociar la empresa, el servicio de web service y el alias:
1) Debe ingresar a clave fiscal con la clave de la persona física
2) Ingresa al servicio "Administrador de Relaciones de Clave
Fiscal"
3) Selecciona la empresa que va a representar
4) Nueva relación
5) Buscar
6) AFIP
7) Servicios interactivos
8) ARFE - Gestionar Relaciones
9) Termina de dar de alta el servicio (cargar un responsable, etc.)
10) Sale de Clave Fiscal y vuelve a ingresar
11) Va directamente al servicio "ARFE - Gestionar Relaciones"
12) Selecciona la empresa que va a representar (puede que no sea
necesario, pero verifique que le diga arriba de todo:
Bienvenido: Persona Física
En representación: Persona Jurídica
13) Abajo de todo va a encontrar tres campos:
-Empresa: Cuit de la empresa emisora de facturas
-Servicio: Despliegue la pestaña y seleccione el servicio de web
service que desea utilizar
-Computador: Nombre del alias que genero cuando subió el pedido en
el Servicio
"Administración de Certificados Digitales"
ALGUNOS ERRORES COMUNES
Error 02 "LA CUIT INFORMADA NO SE ENCUENTRA AUTORIZADA A EMITIR
COMPROBANTES
ELECTRONICOS ORIGINALES O EL PERIODO DE INICIO AUTORIZADO ES
POSTERIOR AL DE LA GENERACION DE LA SOLICITUD"
El empadronamiento lo debe realizar a través del servicio de Clave
Fiscal "Regimenes de facturación y
registracion (REAR/RECE/RFI)". Se adjunta link donde les muestra una
demo de empadronamiento:
http://www.afip.gov.ar/fe/
Seleccione:
Herramientas de Asistencia/Demos interactivas/Proceso de
empadronamiento
En caso que usted considere que se ha empadronado correctamente, y
el mensaje de error le sigue surgiendo,
entonces deberá remitir la consulta a la mesa de ayuda del
contribuyente
facturael...@afip.gov.ar o
telefónicamente al 0810-999-2347, ya que el problema no es del
software de web service, sino que, o esta mal
empadronado, o no se empadrono, o aun falta que migre la
información del empadronamiento a las bases de AFIP.
Error 04 "EL PUNTO DE VENTA INFORMADO NO SE ENCUENTRA DECLARADO PARA
SER UTILIZADO EN EL PRESENTE REGIMEN"
Cada punto de venta que va a utilizar debe registrarlo desde el
portal de AFIP
a través del servicio "Regimenes de facturación y registracion (REAR/
RECE/RFI)", ingresando con su clave fiscal
No levantaron el punto de venta y lo asociaron (en este caso wsfe)
al servicio "Rece para Aplicativo y Webservice"
ERROR DE CONEXION CON EL SERVIDOR
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
The caused of the problem and solution are both well explain in this
article. Below is just the same solution,
but demonstrate in my development environment
1. Get InstallCert.java
Get a InstallCert.java file from
http://blogs.sun.com/andreas/resource/InstallCert.java
2. Add Trusted Keystore
Run InstallCert.java, with your hostname and https port, and press
“1” when ask for input.
It will add your “localhost” as a trusted keystore, and generate a
file named “jssecacerts“.
C:\>java InstallCert localhost:8443
Loading KeyStore C:\Program Files\Java\jre6\lib\security
\cacerts...
Opening connection to localhost:8443...
Starting SSL handshake...
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
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown
Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(Unknown
Source)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Unknown
Source)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Unknown
Source)
at
com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(Unknown
Source)
at
com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(Unknown
Source)
at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Unknown
Source)
at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Unknown
Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown
Source)
at
com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown
Source)
at
com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown
Source)
at
com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown
Source)
at InstallCert.main(InstallCert.java:87)
Caused by: sun.security.validator.ValidatorException: PKIX path
building failed: sun.security.provider.certpath.SunCertP
athBuilderException: unable to find valid certification path to
requested target
at sun.security.validator.PKIXValidator.doBuild(Unknown Source)
at sun.security.validator.PKIXValidator.engineValidate(Unknown
Source)
at sun.security.validator.Validator.validate(Unknown Source)
at
com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.validate(Unknown
Source)
at
com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown
Source)
at InstallCert
$SavingTrustManager.checkServerTrusted(InstallCert.java:182)
... 9 more
Caused by:
sun.security.provider.certpath.SunCertPathBuilderException: unable to
find valid certification path to reques
ted target
at
sun.security.provider.certpath.SunCertPathBuilder.engineBuild(Unknown
Source)
at java.security.cert.CertPathBuilder.build(Unknown Source)
... 15 more
Server sent 1 certificate(s):
1 Subject CN=yong mook kim, OU=mkyong, O=mkyong, L=puchong, ST=PJ,
C=my
Issuer CN=yong mook kim, OU=mkyong, O=mkyong, L=puchong, ST=PJ,
C=my
sha1 32 3e 15 42 96 ba e9 4d 9c 5d e7 5e 6b 0f 30 23 b4 e3 f4
98
md5 c8 dd a1 af 9f 55 a0 7f 6e 98 10 de 8c 63 1b a5
Enter certificate to add to trusted keystore or 'q' to quit: [1]
1
[
[
Version: V3
Subject: CN=yong mook kim, OU=mkyong, O=mkyong, L=puchong, ST=PJ,
C=my
Signature Algorithm: SHA1withRSA, OID = 1.2.840.113549.1.1.5
Key: Sun RSA public key, 1024 bits
modulus:
1129473579651954554552730664834664064459539051598864058082387115962631728819634110255367718769683451438528187
923246533854744470790959477657386037636238098777089479256059697784394926741427654735994678054030193662669088404706890444
59364523220747231216704221781747262219695262340353839314222273672957748320603247
public exponent: 65537
Validity: [From: Tue Dec 14 15:13:51 SGT 2010,
To: Mon Mar 14 15:13:51 SGT 2011]
Issuer: CN=yong mook kim, OU=mkyong, O=mkyong, L=puchong, ST=PJ,
C=my
SerialNumber: [ 4d07192f]
]
Algorithm: [SHA1withRSA]
Signature:
0000: 38 E4 F4 D9 51 B1 5F C1 01 13 32 79 DE 97 26 58 8...Q._...
2y..&X
0010: 13 08 F1 A0 33 DB B9 90 AF EE 9E AE B9 9B 68 7D ....
3.........h.
0020: DF E8 7D 79 9D 92 24 4A 76 C9 4C 28 DA 68 B0 62 ...y..
$Jv.L(.h.b
0030: FF AB 27 03 5C DD 1F C8 77 A2 25 18 DF 0C DC FD ..'.\...w.
%.....
0040: D3 39 5D 18 B4 BA 4B 36 8C FD C5 80 FF F2 E3 4D .
9]...K6.......M
0050: 0A 28 57 B9 04 D8 25 F6 FB CA DA 13 0C 36 FB 02 .(W...
%......6..
0060: 9A B3 B1 28 46 D1 8E C7 D9 1A 5B CE BB A6 6F FD ...(F.....
[...o.
0070: 6D F2 35 D9 95 43 6E 38 2A 56 E7 31 21 D9 F0 90 m.
5..Cn8*V.1!...
]
Added certificate to keystore 'jssecacerts' using alias
'localhost-1'
3. Verify Trusted Keystore
Try run the InstallCert command again, the connection should be ok
now.
C:\>java InstallCert localhost:8443
Loading KeyStore jssecacerts...
Opening connection to localhost:8443...
Starting SSL handshake...
No errors, certificate is already trusted
Server sent 1 certificate(s):
1 Subject CN=yong mook kim, OU=mkyong, O=mkyong, L=puchong, ST=PJ,
C=my
Issuer CN=yong mook kim, OU=mkyong, O=mkyong, L=puchong, ST=PJ,
C=my
sha1 32 3e 15 42 96 ba e9 4d 9c 5d e7 5e 6b 0f 30 23 b4 e3 f4
98
md5 c8 dd a1 af 9f 55 a0 7f 6e 98 10 de 8c 63 1b a5
Enter certificate to add to trusted keystore or 'q' to quit: [1]
q
KeyStore not changed
C:\>
4.Copy jssecacerts
Copy the generated “jssecacerts” file to your “$JAVA_HOME\jre\lib
\security” folder.
5. Done
Run your web service client again, it should be working now.
Espero que les sirva (cada vez que tengo que hacer un nuevo acceso lo
sigo paso por paso y no tengo problemas, hasta ahora).
Saludos.
On 1 sep, 19:05, Claudio Gabriel Depalma <
cdepalma...@gmail.com>
wrote: