Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Autofirma (alias del certificado) (https://www.clubdelphi.com/foros/showthread.php?t=91572)

keys 07-03-2017 10:57:05

Autofirma (alias del certificado)
 
Hola a todos. Estoy intentando usar la utilidad autofirma proporcionada por la administración electronica para firmar documentos. Tiene una utilidad para poder llamarla desde la linea de comandos. Uno de los parametros que pide es el alias del certificado para realizar la firma.
Código Delphi [-]
C:\AutoFirma\AutoFirma.exe" sign -i c:\carpeta\fichero.xml -o c:\carpeta\firmado.xml -store windows  -alias le-56772dsd-fc29-b432-f56f-sdfs45sd5456

Alguien sabe como sacar desde delphi a lo que ellos llaman alias del certificado.

Un Saludo y gracias.

newtron 07-03-2017 13:53:14

¿Ese alias al que te refieres se ve en los certificados desde el explorador de internet? porque yo he estado echando un vistazo con Mozilla y no lo veo.

keys 07-03-2017 14:02:00

Cita:

Empezado por newtron (Mensaje 514071)
¿Ese alias al que te refieres se ve en los certificados desde el explorador de internet? porque yo he estado echando un vistazo con Mozilla y no lo veo.

Lo primero gracias. En Mozilla si pero tiene que ser el de windows no el de mozilla.

En los certificados de mozilla ya lo veo, pero no en el de windows.

Un Saludo.

newtron 07-03-2017 14:11:59

Hola de nuevo.

He estado echando un vistazo por si veía algo en la función que estamos usando para el tema del SII pero no he visto nada relacionado con el alias.

Mirando por internet he encontrado esta página que igual te puede dar algo de luz, está en portugués pero bueno, viene el código delphi hablando de "alias".

De una forma o de otra si no consigues tirar por esa vía te puedo pasar un link de un programa java, que es el que yo uso, que hace algo parecido y funciona bastante bien, lo único es que tienes que tener java instalado pero no creo que sea mayor problema. No te lo pongo ahora porque tendré que buscar el link, si te interesa me lo comentas.

Saludos

Edito: He soltado una tontería porque estoy pensando en que precisamente tu problema es que no querrás seleccionar el certificado cada vez y por eso preguntas por el alias. En el programa
en java que te comento solo pregunta fichero de entrada y salida y se abre la ventana para seleccionar el certificado con el que quieres firmar así que igual tampoco te vale.

keys 07-03-2017 15:07:19

Lo primero gracias.
Miraré el enlace. También he mirado lo utilizado con los certificados del sii pero no consigo encontrar el alias.
No me sirve lo que dices por que previamente le muestro los certifiados y firmo el seleccionado un monton de documentos, y claro no puede estar seleccionando el certificado para cada documento.

Un Saludo.

keys 08-03-2017 10:25:23

Hola a todos.

Ya he conseguido pasar el certificado, en el siguiente enlace http://www.ajpdsoft.com/modules.php?...rticle&sid=481 hay un ejemplo en delphi de como utilizar las CAPICOM para obeneter los certificados, que ha servido para el SII tambien.

El problema era que para las firmas del almacen de windows hay que pasar el parametro entre comillas dobles "".

Código Delphi [-]
autofirmaCommandLine sign -i c:\carpeta\factura.pdf -o c:\carpeta\firmado.pdf -store windows -alias "ALIAS DEL CERTIFICADO QUE SE OBTIENE EN EL EJEMPLO DEL ENLACE CON CAPICOM"

 En el ejemplo se obtiene en certificadoActual.GetInfo (CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME)));

Por cierto con esta utilidad se pueden firmar varios tipos de ficheros, pdf, xml, factura-e, etc y con varias politicas de firmas. Lo que hace que puedas prescindir de componentes de terceros para firmar ficheros y no tener que pasar por caja.

Más información sobre esta utilidad y otras en el siguiente enlace https://administracionelectronica.go...a#.WL_Ne_IlLZx

Un Saludo. Espero que a alguien le sirva.

newtron 08-03-2017 11:37:45

Gracias por la info. ^\||/^\||/

Edito: ¿Ese programa hay que instalarlo o es un .exe independiente?

keys 10-03-2017 09:16:44

En principio el programa tiene un instalador. Pero he probado a llevarme el ejecutable a un equipo sin instalarlo y funciona correctamente. Lo único que pide es que en el equipo este instalado el JAVA.

Un Saludo.

newtron 10-03-2017 09:26:33

Cita:

Empezado por keys (Mensaje 514186)
En principio el programa tiene un instalador. Pero he probado a llevarme el ejecutable a un equipo sin instalarlo y funciona correctamente. Lo único que pide es que en el equipo este instalado el JAVA.

Un Saludo.

Ok, gracias.

newtron 05-05-2017 18:41:50

Keys.

Estoy haciendo pruebas con el programita este de la firma y me da un error de que no me reconoce el alias del certificado.

¿El alias es donde aparece (en el caso de las personas físicas) el nombre? Ej: "FULANO DE COPAS NIF 23451245M"

Gracias

newtron 05-05-2017 19:47:21

Ok. Creo que ya lo tengo.

Ya me funciona pero no con el parámetro que pones sino con el "Nombre del contenedor": (certificadoActual.PrivateKey.ContainerName del ejemplo de AjpdSoft) qué cosas....

Al final he dado con la tecla porque he puesto en linea de comandos para que me liste los alias de los certificados: "autofirmacommandline listaaliases" y he visto que había una pequeña diferencia en el texto de uno y de otro.

Saludos

newtron 06-05-2017 09:05:42

Bueno. Para quien le sirva creo que ya tengo claro el problema.

Según parece hay certificados que tienen clave privada y otros que no. Yo por ejemplo tengo dos, uno a nombre de una sociedad (que no tiene clave privada) y otro a nombre mio (que si que la tiene).

El tema es que si no tiene clave privada, para firmar hay que poner el alias que sale del ejemplo como
certificadoActual.GetInfo (CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME)

y si la tiene hay que poner el alias que sale como

certificadoActual.PrivateKey.ContainerName

Saludos

Casimiro Notevi 06-05-2017 12:22:41

^\||/^\||/^\||/

keys 08-05-2017 08:29:44

Hola. Perdona por no haberte contestado pero es que durante el fin de semana procuro desconectar de todo esto.

Una aportación más. Si firmas e-facturas en xml por la línea de comandos, el fichero que se genera si lo validas en la página de la aeat da error de firma. Si lo firmas con el programa a mano funciona correctamente. Pegándome con la documentación y con un poco de suerte, ya que ellos no te dan ninguna ayuda lleque a encontrar que poniendo alguno de los siguientes parametros no da error.

Código Delphi [-]
autofirmacommandline sign -i C\factura.XML -o C:\FacturaFirmada.xml -store windows -alias "ALIAS DEL CERTIFICADO" -format facturae -config signatureProductionCity=MADRID\nsignatureProductionProvince= MADRID\nsignatureProductionPostalCode= 28070\nsignatureProductionCountry= ESPAÑA

Es decir los parametros del final que hacen refencia a la firma.

Un Saludo.

newtron 08-05-2017 17:07:30

Cita:

Empezado por keys (Mensaje 516338)
Hola. Perdona por no haberte contestado pero es que durante el fin de semana procuro desconectar de todo esto.

Haces bien.

Cita:

Empezado por keys (Mensaje 516338)
Una aportación más. Si firmas e-facturas en xml por la línea de comandos, el fichero que se genera si lo validas en la página de la aeat da error de firma. Si lo firmas con el programa a mano funciona correctamente. Pegándome con la documentación y con un poco de suerte, ya que ellos no te dan ninguna ayuda lleque a encontrar que poniendo alguno de los siguientes parametros no da error.

Gracias por el aviso, no me había dado cuenta. Las pruebas de validación las hice sobre ficheros firmados con el programa normal y no había pensado en que saldría algún problema por el hecho de usar el de comandos.

Saludos

manelb 08-05-2017 17:56:54

La lista de Alias de los certificados tambien se puede obtener dede la linea de comandos

Código:

AutofirmaCommandLine.exe listaaliases
Otra cosa:
Keys, podrias poner un enlace a la documentación de la que hablas.
Yo solo he localizado el manual de instalación de autofirma, pero no un detalle de los comandos aceptados.

Los paràmetros del final (Madrid), los pones a piñon fijo o es por que tu firmas desde Madrid?

manelb 08-05-2017 18:09:19

Corrijo :(

Código:

AutofirmaCommandLine.exe listaliases

newtron 08-05-2017 18:46:36

Hola.

Si pones (por ejemplo) en la linea de comandos: "autofirmacommandline sign" te dará un error y te saldrá la lista de opciones. Normalmente poniendo loquesea.exe /? suele salir pero aquí no funciona así.

Saludos

manelb 08-05-2017 19:03:48

Aqui le pones:

Código:

AutofirmaCommandLine -help

keys 09-05-2017 08:22:51

Cita:

Empezado por manelb (Mensaje 516355)
La lista de Alias de los certificados tambien se puede obtener dede la linea de comandos

Código:

AutofirmaCommandLine.exe listaaliases
Otra cosa:
Keys, podrias poner un enlace a la documentación de la que hablas.
Yo solo he localizado el manual de instalación de autofirma, pero no un detalle de los comandos aceptados.

Los paràmetros del final (Madrid), los pones a piñon fijo o es por que tu firmas desde Madrid?

Los parametros son donde se hace la firma, pueden ser cualquiera. Pero si no los pones luego a la hora de validar en la pagina de efactura da error.

En este enlace esta toda la información, descargas, hay unas clase java para poderlo integrar en una aplicacion sin el ejecutable.

https://administracionelectronica.go...l#.WRFeUtwlGHs

En la sección de descargas Documentacion del Miniapplet y autofirma en Autofirma - Manual de instalación usuarios, tienes lo de la línea de comandos pero más que

AutoFirmaCommandLine sign –help no viene.

Yo lo que hice fue pegarme con los diferentes manuales que hay y con un poco de suerte di con con los parámetros.

newtron 09-05-2017 17:32:45

Keys.

Estoy teniendo problemas extraños con distintos certificados del estilo de que un certificado determinado en un pc me coge bien el nombre y en otro no, cosas muy raras y estoy pensando en abrir el programa autofirma y que se haga la operación desde el.

El tema es que en alguna prueba quiero recordar que con el autofirmacommandline había conseguido llamar al programa enviandole como parámetro el fichero que había que firmar para que no tuviera el operador que seleccionarlo pero ahora no soy capaz, me sale siempre el error "No se reconoce el parámetro autofirma.pfx". ¿Tú has hecho algo parecido a eso?

Gracias y un saludo

newtron 09-05-2017 17:43:35

Vaya... parece que, después de todo el día dando cabezazos, poner el post me ha servido de inspiración. Solo hay que ponerle el parámetro -gui para que se abra en modo gráfico.

Saludos

keys 10-05-2017 08:32:14

A veces no hay nada como preguntar en alto para darse cuenta. :):):)

Yo lo estoy usando siempre desde la línea de comandos ya que son varios los ficheros que tengo que firmar, no le puedo estar pidiendo al usuario que firme a mano cada fichero, de momento no he tenido ningun problema con los certificados.

Lo tengo en unos cuantos clientes, cada uno con sus certificados de distintos tipos y todo bien. Eso si los nombres de los certificados los estoy obteniendo con un componente (TElWinCertStorage) de los eldos que los tengo comprados y funcionan de maravilla. por cierto en delphi 6.

Ni tan siquiera les instalo la aplicación. Les copio el ejecutable (autofirmacommandline) en la carpeta de mis progamas y tiro de él. Lógicamente tienen el java instalado.

El único problema que he tenido es el de la validación de los ficheros en la página de efactura. que ya comenté en un post anterior como solucionarlo. Por cierto si los firmas a mano desde el programa no hay ese problema. Aparte del problema de pegarme con la escasa documentación y ayuda que tiene. Les llegue a preguntar por el sistema de preguntas que tienen y me dijeron que solo contestaban a empresas públicas y que buscara la vida.

Un Saludo.

lithium76 17-05-2017 00:10:03

Cita:

Empezado por keys (Mensaje 516481)
A veces no hay nada como preguntar en alto para darse cuenta. :):):)

Yo lo estoy usando siempre desde la línea de comandos ya que son varios los ficheros que tengo que firmar, no le puedo estar pidiendo al usuario que firme a mano cada fichero, de momento no he tenido ningun problema con los certificados.

Lo tengo en unos cuantos clientes, cada uno con sus certificados de distintos tipos y todo bien. Eso si los nombres de los certificados los estoy obteniendo con un componente (TElWinCertStorage) de los eldos que los tengo comprados y funcionan de maravilla. por cierto en delphi 6.

Ni tan siquiera les instalo la aplicación. Les copio el ejecutable (autofirmacommandline) en la carpeta de mis progamas y tiro de él. Lógicamente tienen el java instalado.

El único problema que he tenido es el de la validación de los ficheros en la página de efactura. que ya comenté en un post anterior como solucionarlo. Por cierto si los firmas a mano desde el programa no hay ese problema. Aparte del problema de pegarme con la escasa documentación y ayuda que tiene. Les llegue a preguntar por el sistema de preguntas que tienen y me dijeron que solo contestaban a empresas públicas y que buscara la vida.

Un Saludo.

Buenas, solo darte las gracias por este aporte. Yo también me estuve pelenado con la casi nula documentación para poder llamar la aplicación desde la línea de comandos al darme cuenta que no se validaba la firma correctamente como sí sucedía desde la interfaz gráfica. También me dijeron lo mismo cuando intenté preguntar y pedir un poco de ayuda. Ya casi lo había dado por perdido.

Muchas gracias de nuevo

jodaws 13-09-2017 12:09:38

Buenos días, yo estoy intentando firmar pero no me funciona... Cuando lo hago con el programa Autofirma de forma manual me firma correctamente el fichero, ya que hago la validación en la página de facturae y sale todo ok. Pero si lo hago con CMD (que luego incluiré dentro del programa delphi) entonces me sale un error en la Política de la firma: No se ha validado la política. Error en la firma , aunque me genera el archivo XSIG

Estoy pensando que alomejor no le paso bien el alias ...

Hablas de un post anterior que comentavas el que creo que es el mismo problema que yo tengo...Me puedes indicar cual es?

Se os acude que puede ser?

Muchas gracias de antemano

keys 13-09-2017 12:27:10

Hola. Cuando llamas a autofirmacommandline tienes que pasarle en -config una serie de datos como son la ciudad,provincia, codigopostal y pais. Lo tienes en un post anterior


Código Delphi [-]
autofirmacommandline sign -i C\factura.XML -o C:\FacturaFirmada.xml -store windows -alias "ALIAS DEL CERTIFICADO" -format facturae -config signatureProductionCity=MADRID\nsignatureProductionProvince= MADRID\nsignatureProductionPostalCode= 28070\nsignatureProductionCountry= ESPAÑA

Un saludo

manelb 13-09-2017 12:46:07

Cita:

Empezado por jodaws (Mensaje 521033)
B
Se os acude que puede ser?

Tiene que funcionar !!!

Con la ayuda de este hilo yo lo conseguí.

primero que nada revisa que el alias es correcto

Código:

AutofirmaCommandLine.exe listaliases
A continuación te paso la linea de comandos que utilizo.
Ya tengo los dientes parámetros configurados tal y como yo lo utilizo
Cita:

"c:\AutoFirma\AutoFirmaCommandLine.exe" sign -i %1 -o %2 -store windows -alias %3 -format facturae -config signatureProductionCity=%4\nsignatureProductionProvince=%5\nsignatureProductionPostalCode=%6\nsignat ureProductionCountry=%7

jodaws 13-09-2017 12:59:03

Muchas gracias por vuestras respuestas, intento llamarlo con los paramétros que me comentais con la linea de comandos (luego ya lo automatizaré) pero me sale : No se reconoce el parametro MADRID\nsignatureProductionPostalCode=

Lo llamo asi:

autofirmacommandline sign -i c:\fac\FAC12555_1700001.XML -o c:\fac\FACFIRMADO.XML -store windows -alias "ALIAS" -format facturae -config signatureProductionCity=MADRID\nsignatureProductionProvince= MADRID\nsignatureProductionPostalCode= 28070\nsignatureProductionCountry= ESPAÑA

El alias en princio está correcto, ya que si pongo uno que no existe me lo dice.

Que es lo que no veo?? Me da la sensación que estoy ciega :(

jodaws 13-09-2017 13:34:39

He puesto solo hasta el primer parámetro

autofirmacommandline sign -i c:\fac\FAC1700001.XML -o c:\fac\FACFIRM.XML -store windows -alias "ALIAS" -format facturae -config signatureProductionCity=MADRID

y parece que me la valida correctamente! Luego haré algunas pruebas más.

Casimiro Notevi 13-09-2017 13:39:03

No olvides las etiquetas para el código, sin ellas es muy difícil de leer.



Gracias :)

jodaws 13-09-2017 15:41:35

Cita:

Empezado por Casimiro Notevi (Mensaje 521038)
No olvides las etiquetas para el código, sin ellas es muy difícil de leer.



Gracias :)


Gracias y disculpa, ya debería reordarlo :)

Casimiro Notevi 13-09-2017 20:58:34

Gracias a ti ^\||/

YellowStone 03-10-2017 15:59:59

Una buena opción para sacar los aliases bien formateados y poder cogerlo correctamente es la siguiente:

autofirmacommandline.exe listaliases -store windows -xml >aliases.xml

Esto nos genera un fichero xml que luego podemos tratar y nos queda algo así:

Código:

<afirma>
        <result>ok</result>
        <response>
                <alias>AC FNMT Usuarios</alias>
                <alias>AC RAIZ FNMT-RCM</alias>
                <alias>17d2dae11e5420c6</alias>
                <alias>ESTE ALIAS ME VALE - 1122334455H</alias>
        </response>
</afirma>


YellowStone 03-10-2017 16:01:47

Cita:

Empezado por jodaws (Mensaje 521036)
Muchas gracias por vuestras respuestas, intento llamarlo con los paramétros que me comentais con la linea de comandos (luego ya lo automatizaré) pero me sale : No se reconoce el parametro MADRID\nsignatureProductionPostalCode=

Lo llamo asi:

autofirmacommandline sign -i c:\fac\FAC12555_1700001.XML -o c:\fac\FACFIRMADO.XML -store windows -alias "ALIAS" -format facturae -config signatureProductionCity=MADRID\nsignatureProductionProvince= MADRID\nsignatureProductionPostalCode= 28070\nsignatureProductionCountry= ESPAÑA

El alias en princio está correcto, ya que si pongo uno que no existe me lo dice.

Que es lo que no veo?? Me da la sensación que estoy ciega :(


Te sobran espacios. A partir de "signatureProductionCity" no puede haber ningún espacio, y tu tienes espacios en antes de la provincia, del código postal y del país.

YellowStone 05-10-2017 10:28:17

Por cierto, que para aquellos que no son capaces de dar con el álias correcto de un certificado (que suele ocurrir mucho con los certificados de representación), que sepan que podemos poner el álias que nosotros queramos.

Simplemente hay que cambiarlo en el certificado. Accedemos a él a través de Opciones de Internet, Contenido, Certificados, elegir el certificado correspondiente, pulsar sobre ver, ir a detalles, y buscar la entrada "Nombre descriptivo", que suele ser la última abajo del todo, le damos a editar propiedades y le ponemos el nombre descriptivo que queramos. Ese será el álias a partir de ahora de dicho certificado.

newtron 05-10-2017 10:43:37

Cita:

Empezado por YellowStone (Mensaje 521548)
Por cierto, que para aquellos que no son capaces de dar con el álias correcto de un certificado (que suele ocurrir mucho con los certificados de representación), que sepan que podemos poner el álias que nosotros queramos.

Simplemente hay que cambiarlo en el certificado. Accedemos a él a través de Opciones de Internet, Contenido, Certificados, elegir el certificado correspondiente, pulsar sobre ver, ir a detalles, y buscar la entrada "Nombre descriptivo", que suele ser la última abajo del todo, le damos a editar propiedades y le ponemos el nombre descriptivo que queramos. Ese será el álias a partir de ahora de dicho certificado.

:eek::eek::eek: Muy buen apunte, gracias.

josemmerida 08-10-2017 19:12:13

Firma xades Enveloped en AutoFirmaCommandLine
 
Buenas tardes.

Estoy intentando sustituir el incomodo aduanetxml por la utilidad autofirma para la firma de archivos XML de aeat.

Resulta que la firma xml que necesito según las especificaciones es "Xades Enveloped".

Arrancando el entorno gráfico hay un desplegable en el cual se elige "Xades Enveloped", firma perfectamente.

En linea de comando el xades "normal" funciona bien con la instrucción

Código:

"AutoFirmaCommandLine.exe" sign -i "C:\PrevArchivo.txt" -o "C:\FirmadoArchivo.txt" -store windows -alias "MiAlias" -format "XAdES" -config signatureProductionCity=MALAGA\nsignatureProductionProvince=MALAGA\nsignatureProductionPostalCode=29016\nsignatureProductionCountry=ESPAÑA
He estado buscando en la documentación Java y en format describe un comando "XAdES Enveloped" que parece que no existe en AutoFirmaCommandLine.exe ya que no se describe al llamar a -help y de hecho no funciona

Incluso he encontrado un parametro para -config que nos indica en que nodo colocamos la firma es: "insertEnvelopedSignatureOnNodeByXPath=/Signature".

Sigo sin dar con la tecla de como firmar "XAdES Enveloped" desde "AutoFirmaCommandLine.exe". ¿A alguien se le ocurre algo?

Muchas gracias de antemano. Lo mismo es una tontería....

Saludos.

YellowStone 15-11-2017 16:26:51

Cita:

Empezado por josemmerida (Mensaje 521633)
Buenas tardes.

Estoy intentando sustituir el incomodo aduanetxml por la utilidad autofirma para la firma de archivos XML de aeat.

Resulta que la firma xml que necesito según las especificaciones es "Xades Enveloped".

Arrancando el entorno gráfico hay un desplegable en el cual se elige "Xades Enveloped", firma perfectamente.

En linea de comando el xades "normal" funciona bien con la instrucción

Código:

"AutoFirmaCommandLine.exe" sign -i "C:\PrevArchivo.txt" -o "C:\FirmadoArchivo.txt" -store windows -alias "MiAlias" -format "XAdES" -config signatureProductionCity=MALAGA\nsignatureProductionProvince=MALAGA\nsignatureProductionPostalCode=29016\nsignatureProductionCountry=ESPAÑA
He estado buscando en la documentación Java y en format describe un comando "XAdES Enveloped" que parece que no existe en AutoFirmaCommandLine.exe ya que no se describe al llamar a -help y de hecho no funciona

Incluso he encontrado un parametro para -config que nos indica en que nodo colocamos la firma es: "insertEnvelopedSignatureOnNodeByXPath=/Signature".

Sigo sin dar con la tecla de como firmar "XAdES Enveloped" desde "AutoFirmaCommandLine.exe". ¿A alguien se le ocurre algo?

Muchas gracias de antemano. Lo mismo es una tontería....

Saludos.

Edito porque no funciona lo que había puesto.

oscarperez-1980 26-02-2022 17:12:06

Cita:

Empezado por YellowStone (Mensaje 522530)
Edito porque no funciona lo que había puesto.

Diste con lo de enveloped?


La franja horaria es GMT +2. Ahora son las 23:57:32.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi