Obtención y Firma del certificado digital X.509 AFIP para la generación de Facturas Electrónicas

Para poder trabajar con los Web Service de Afip, previamente se debe generar un certificado digital por medio de un utilitario llamada OpenSSL, y luego hacer autorizar ese certificado por la AFIP. Se presupone que ya se posee clave fiscal de nivel acorde a los servicios que se utilizan (NIVEL 3), tramitada en una dependencia de AFIP. A continuación se describen los pasos para crear y autorizar el certificado.

PASO1: Bajar e instalar el Visual C++ redistribuible, que es un requisito previo a la instalación del OPENSSL. Se puede bajar desde los siguientes link

Si posee Windows de 32 bits

http://www.microsoft.com/es-es/download/details.aspx?id=29

Si posee Windows de 64 bits

http://www.microsoft.com/es-ar/download/details.aspx?id=15336

Verá una pantalla como la siguiente, hacer clic en Descargar

Descargue e instale el paquete, luego seguir al paso 2.

PASO2: Bajar e instalar OpenSSL para Windows, siga el siguiente link:

Descargar “OpenSSL-0_9_8i.exe” Win32OpenSSL-0_9_8i.exe – Descargado 240 veces – 7 MB

Realizar la instalación pulsando Next en todas las pantallas, al final aparecerá una ventana como la siguiente, pulsar Finish.

PASO3: Una vez instalados los programas necesarios, el próximo paso será generar el certificado digital. Para tal fin, seguir las siguientes instrucciones:

• Ingresar por línea de comando (MSDOS) al directorio de OpenSSL C:\OpenSSL\bin>

Si es Windows 7 ingresar a “Símbolo del Sistema” ejecutándolo como Administrador.

• Generar la clave privada con los siguientes comandos:

Openssl genrsa -out privada.key 1024

Aquí podemos ver un ejemplo:
[ ]

Al ejecutar el comando se ve lo siguiente

El comando crea un archivo en la carpeta \OPENSSL\BIN llamado privada.key

OBS: conviene hacer un respaldo del archivo generado que contiene la clave privada (archivo llamado privada.key que se encuentra en \OPENSSL\BIN) para evitar futuros inconvenientes, ya que será vital para los futuros pasos y no debe faltar.

  • Generar el pedido (CSR: certificate signing request) ejecutando desde la línea de comando:

openssl req -new -key privada.key –subj “/C=AR/O=subj_o/CN=subj_cn/serialNumber=CUIT subj_cuit” -out pedido

Donde:

  • privada: es la clave privada generada en el paso anterior
  • subj_o: Es el nombre de la empresa
  • subj_cn: es el nombre del usuario o hostname
  • subj_cuit: es la CUIT, sin guiones de la empresa o programador
  • pedido: es el nombre del archivo CSR de salida que se enviara a la afip.

Veamos un ejemplo:

Una vez que haya generado correctamente su CSR, puede usarlo para obtener su certificado digital X.509.

 

Para el caso del entorno de Producción (entorno real) se podrá obtener el certificado interactivamente usando el servicio “Adminitración de Certificados Digitales” del menú de trámites con Clave Fiscal en el portal www.afip.gob.ar. (Para saber los pasos para obtener el certificado de la página de AFIP, ver ANEXO I).

Una vez autorizados a usar el Web Services correspondiente de AFIP, la empresa quedará registrada en el servicio de autorización de AFIP como entidad autorizada para usar el Web Services que corresponda.

Para trabajar en un entorno de pruebas, se puede generar un certificado de Homologación siguiendo los pasos del ANEXO II.

En ambos casos (Homologación o Producción) se obtiene un archivo de extensión “CRT” y se puede continuar con el PASO 4. En caso de generar los dos certificados, prestar especial atención al nombre que se le asigna a cada archivo.

Para entornos de desarrollo (Modo Pruebas):

Enviar un mail a AFIP, a la dirección “webservices@afip.gov.ar” , solicitando certificados CRT, con el archivo CSR adjunto, especificando como se construyo el archivo CSR.

Se debe incluir en el texto del mail, los servicios a los que vamos a acceder: por ejemplo: WebService de Facturacion Electronica.

Modelo de mail para pedir por entorno de desarrollo:

A quien corresponda.En mi carácter de desarrollador y con el objetivo de realizar pruebas de desarrollo, solicito me envíen por favor el certificado digital X.509.Los WS donde debere realizar pruebas son:WSFE – WebService de Facturacion ElectronicaAdjunto una copia de mi CSR (archivo pedido)El mismo fue generado tal como especifica la pagina del AFIP

openssl req -new -key privada.key –subj “/C=AR/O=ALFANET/CN=ALBERTO/serialNumber=CUIT 23228073259”-out pedido.csr

 

Muchas Gracias

 

Alberto Antunez

DNI.

 

Para entornos de Producción (Modo Real):

Entrar en la página de AFIP con clave fiscal, para crear el certificado digital y asociar el cliente con el mismo.

Wsaa_obtener_certificado_produccion.pdf

Cuando pide el CUIT o CUIL del AUTORIZADO hay que poner el de la persona que va a encargarse de crear el certificado, NO es el CUIT de la empresa.

 

 

PASO 4: Una vez generado el certificado (PASO3), obtenemos un archivo con extensión *.crt. Este es el certificado a usar. Pero ATENCIÓN el certificado devuelto por AFIP es extensión *.crt y el runtime de NET y el OCX esperan un certificado extensión *.pfx. De lo contrario recibiremos un error de conexión similar a: “La contraseña de red especificada no es válida” o bien “la clave no existe”.

Para poder usar el certificado es necesario convertirlo. A continuación se explican los pasos para convertirlo (primeramente debemos convertir el certificado *.crt a la extensión *.p12. y de esta extensión a *.pfx)

Para convertir el certificado del formato crt al formato p12 :

  • Guardar el archivo *.crt enviado por AFIP en la carpeta OPENSSL\BIN
  • Ingresar por línea de comando (MSDOS) al directorio de OpenSSL C:\OpenSSL\bin>
  • Ejecutar el siguiente comando:

openssl pkcs12 -export -inkey privada.key -in x.crt -out x.p12 -name “x

Reemplazando las letras x (que están en color rojo) por el nombre del certificado recibido de AFIP. Solo reemplazar las letras x, dejar comillas, guiones y puntos como están (si al ejecutar el comando solicita una contraseña o clave no ingresar nada, pulsar Enter directamente).

La pantalla será similar a esta:

(en este ejemplo, nuestro archivo se llama certificado.crt pero puede tener otro nombre) Esto nos dejará en la carpeta OPENSSL\BIN un archivo de extensión p12 como se ve en el siguiente ejemplo:

Este archivo de extensión p12 debemos convertirlo a extensión .pfx desde el panel de control.

Los pasos y las pantallas corresponden a Windows XP. En algunos Windows las pantallas son similares aunque en algunos casos (por configuración de permisos o por el control UAC) la conversión pide una contraseña. En estos casos seguir igualmente la guía pero creando una contraseña.

• Ir a Panel de Control.

• Ir a Opciones de Internet.

  • Ir a solapa “contenido”
  • Seleccionar el botón “certificados”

  • Ir a solapa “personal” (la primera).
  • Seleccionar el botón “importar”.

  • En la pantalla del asistente seleccionar “siguiente”. Nos pedirá donde está el archivo *.p12 para convertir a *.pfx. Seleccionar el botón “examinar”. Antes de navegar hasta la carpeta donde está el archivo *.p12 (generalmente c:\openssl\bin) indicar en “tipo de archivo” que estamos buscando un archivo *.p12 como muestran estas pantallas:

  • Seleccionar el archivo *.p12 y aceptar (en nuestro ejemplo es certificado.p12).
  • En el asistente seleccionar “siguiente”.

  • Nos pedirá una contraseña. No colocar nada (excepto que específicamente se quiera proteger el archivo de certificados con una contraseña o el propio Windows obligue a hacerlo, en este caso, crear una contraseña y marca como exportable). Debe quedar algo como esto:

  • Seleccionar “Siguiente”. Nos pedirá en que lugar se guarda el certificado. Dejarlo en “Personal” y seleccionar “Siguiente”.

  • Luego seleccionar “Finalizar”. Windows muestra el mensaje de importación correcta.

  • Luego de Aceptar el mensaje, debe quedar algo como esto:

     

  • En esta pantalla seleccionar el botón “exportar”. Aparece el asistente.

  • En el asistente seleccionar “siguiente”.
  • Elegir “exportar la clave privada”. Debe quedar como esto:

  • Seleccionar “siguiente”.
  • En la pantalla que aparece dejar las opciones como están. Deberían ser estas:

  • Seleccionar “Siguiente”. Nos pedirá contraseña. no colocar nada.

  • Seleccionar “Siguiente”. Nos pedirá donde guardar el archivo (debemos ingresar el nombre del archivo) *.pfx. en la carpeta que lo guardemos (por ejemplo c:\OPENSSL\BIN\certificado.pfx).

Finalmente vemos la pantalla del asistente. Seleccionar “Finalizar”:

  • Al volver a la pantalla de CERTIFICADOS, seleccionar “Cerrar”.

En caso de inconvenientes, los servidores de la AFIP responderán con un mensaje que identifica el problema:

• ns1:coe.notAuthorized Computador no autorizado a acceder los servicios de AFIP: el certificado no es válido o no está correctamente asociado al ambiente en el cual se intenta usar (ej. certificado de homologación usado en producción). Revisar el proceso de generación y asociación del certificado.

• ns1:cms.cert.expired Certificado expirado: los certificados poseen una fecha de vencimiento que varía según el ambiente para el cual fueron creados y la fecha de emisión. Generar y asociar nuevamente el certificado.

OBS: Sincronización de Clocks: La fecha y hora del computador que se comunica con los servicios Web de AFIP deberá estar sincronizada. Dicha sincronización se podrá realizar a través del protocolo NTP con el servidor “time.afip.gov.ar” u otro servidor que preste dicho servicio.

Para cambiar la Sincronizacion de Clocks, seguir los siguientes pasos

  1. Panel de Control
  2. Reloje, idioma y Region

  1. Elegir configurar la hora y la fecha
  2. Solapa Hora de Internet
  3. Cambiar la Configuracion
  4. Cambiar el servidor, ver imagen