Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Envío de registros y sus respuestas (https://www.clubdelphi.com/foros/forumdisplay.php?f=66)
-   -   Pasar certificado pfx a pem para CURL (https://www.clubdelphi.com/foros/showthread.php?t=97694)

Decanato 18-09-2025 13:11:44

Pasar certificado pfx a pem para CURL
 
Hola a todos y especialmente a los que utilizáis CURL para comunicar con AEAT.
He estado haciendo las pruebas con mi certificado (p12) y va estupendo. Pues bien, empiezo con los clientes y el formato del certificado del primero (e imagino que habrán muchos así) que me encuentro es pfx, que directamente no lo soporta CURL. He estado leyendo que hay que pasarlo a pem mediante OPENSSL para poderlo utilizar con CURL, pues bien me pongo a ello. Ejecuto desde el sistema:

openssl pkcs12 -in certificado.pfx -out certificado.pem -nodes

Al ejecutar esto me solicita una contraseña:

Enter Import Password:

Y el cursor para, se supone, introducir la contraseña. Pues bien, por mucho que pulso teclas no me pilla nada y, por supuesto al pulsar intro me dice:

Mac Verify error: invalid password?

A ver si alguno que se mueva con esto me puede echar un cable, porque nunca me he tenido que pelear ni con CURL (esto ya más o menos lo he pillado) ni con los certificados (con esto ando perdidísimo). Igual hago preguntas bastante estúpidas, disculpadme si esd así... pero ya digo, el tema de certificados estoy super verde.

Os agradecería infinito que me echaseis un cable. Gracias!!

ermendalenda 18-09-2025 15:25:34

Cita:

Empezado por Decanato (Mensaje 567842)
Hola a todos y especialmente a los que utilizáis CURL para comunicar con AEAT.
He estado haciendo las pruebas con mi certificado (p12) y va estupendo. Pues bien, empiezo con los clientes y el formato del certificado del primero (e imagino que habrán muchos así) que me encuentro es pfx, que directamente no lo soporta CURL. He estado leyendo que hay que pasarlo a pem mediante OPENSSL para poderlo utilizar con CURL, pues bien me pongo a ello. Ejecuto desde el sistema:

openssl pkcs12 -in certificado.pfx -out certificado.pem -nodes

Al ejecutar esto me solicita una contraseña:

Enter Import Password:

Y el cursor para, se supone, introducir la contraseña. Pues bien, por mucho que pulso teclas no me pilla nada y, por supuesto al pulsar intro me dice:

Mac Verify error: invalid password?

A ver si alguno que se mueva con esto me puede echar un cable, porque nunca me he tenido que pelear ni con CURL (esto ya más o menos lo he pillado) ni con los certificados (con esto ando perdidísimo). Igual hago preguntas bastante estúpidas, disculpadme si esd así... pero ya digo, el tema de certificados estoy super verde.

Os agradecería infinito que me echaseis un cable. Gracias!!

Pfx=p12
Te deberia funcionar
Renombralo a ver

Decanato 18-09-2025 16:17:28

Cita:

Empezado por ermendalenda (Mensaje 567851)
Pfx=p12
Te deberia funcionar
Renombralo a ver

Lo estoy probando y parece que si, que va bien... Voy a cerciorarme del todo.
Gracias por el cable, ermendalenda, como siempre aportando y ayudando!!!

delphi.com.ar 18-09-2025 17:50:30

Los archivos PFX puede contener en un solo archivo, el certificado de dominio, la clave privada y todos los certificados intermedios y/o el certificado de raiz. Por eso es normal que estén protegidos con contraseña, si no te notificaron la contraseña es muy posible que esté vacía, pero openssl te la va a preguntar de todas maneras, pero no debes ingresar ningún valor. (enter, enter)

Saludos.

Decanato 18-09-2025 17:53:10

Nada, lo hago en el ordenador del cliente un no va... el CURL me devuelve el siguiente error:

Curl (35): schannel: AcquireCredentials Handle failed: SEC_E_NO_CREDENTIALS (0x8009030E) - No hay credenciales disponibles en el paquete de seguridad

En mi equipo está visto que no lo puedo probar porque se lo traga todo, y no sé por qué.

Me pregunto si es necesario que los navegadores (Chrome y Edge) tengan importado el certificado y si puede ser eso. Lamento preguntar cosas que igual son muy básicas, pero es que para mi esto es como dar palos de ciego :(

Si alguien fuese tan amable de detallarme los pasos que hay que seguir para instalar un certificado en un equipo y que luego me permita utilizarlo con CURL le estaría agradecido hasta el infinito

Decanato 18-09-2025 18:07:07

Cita:

Empezado por delphi.com.ar (Mensaje 567855)
Los archivos PFX puede contener en un solo archivo, el certificado de dominio, la clave privada y todos los certificados intermedios y/o el certificado de raiz. Por eso es normal que estén protegidos con contraseña, si no te notificaron la contraseña es muy posible que esté vacía, pero openssl te la va a preguntar de todas maneras, pero no debes ingresar ningún valor. (enter, enter)

Saludos.

Si si, ya me dieron la contraseña y conseguí generar el fichero PEM... Pero esperaba también que se generase un fichero KEY que no se ha generado y claro, al intentar la conexión con curl me da un error 58

Tienes idea de por qué no me genera el fichero KEY???... para generar el fichero PEM ejecuto en la línea de comandos esto:

openssl pkcs12 -in certificado.pfx -out certificado.pem -nodes

delphi.com.ar 18-09-2025 18:26:28

Cita:

Empezado por Decanato (Mensaje 567858)
Tienes idea de por qué no me genera el fichero KEY???... para generar el fichero PEM ejecuto en la línea de comandos esto:

Porque solo estás extrayendo el certificado de dominio. La clave privada la puedes extraer de dos formas:

Código:

# Sin cifrar, que no se protege con contraseña:
openssl pkcs12 -in certificado.pfx -nocerts -nodes -out certificado.key

# Cifrada, protegida con contraseña:
openssl pkcs12 -in certificado.pfx -nocerts -out certificado.key

¿Cómo es la instrucción de CURL que estás usando?... ¿Esto es porque el servidor requiere un certificado del cliente?

ermendalenda 18-09-2025 18:50:49

Agregale el parametro -k y si no va pon la llamada completa excluyendo contraseñas

Decanato 18-09-2025 19:08:07

Cita:

Empezado por delphi.com.ar (Mensaje 567859)
Porque solo estás extrayendo el certificado de dominio. La clave privada la puedes extraer de dos formas:

Código:

# Sin cifrar, que no se protege con contraseña:
openssl pkcs12 -in certificado.pfx -nocerts -nodes -out certificado.key

# Cifrada, protegida con contraseña:
openssl pkcs12 -in certificado.pfx -nocerts -out certificado.key

¿Cómo es la instrucción de CURL que estás usando?... ¿Esto es porque el servidor requiere un certificado del cliente?

Ah vale, gracias, he generado ya el PEM y el KEY sin cifrar, a ver qué tal mañana y os cuento.

La instrucción curl que estoy intentando es simplemente para verificar un DNI y es la siguiente:

curl.exe --connect-timeout 300 -m 300 -S -L -d "@DNI_CIF.xml" -o DNI_CIF_Respuesta.xml --cert certificado.pem --key certificado.key https://www1.agenciatributaria.gob.e.../ws/VNifV2SOAP

En la que probé antes era lo mismo pero con --cert certificado.pem --key certificado.pem

Decanato 18-09-2025 19:14:20

Cita:

Empezado por ermendalenda (Mensaje 567860)
Agregale el parametro -k y si no va pon la llamada completa excluyendo contraseñas

Ese parámetro se lo añado al comando curl??? Lo dices para hacer lo que me dijiste de renombrar el pfx a p12??

El curl que mando, cuando es con p12, es el siguiente:

curl.exe --connect-timeout 300 -m 300 -S -L -d "@DNI_CIF.xml" -o c:\sgb\xml\DNI_CIF_Respuesta.xml --cert-type P12 --cert Certificado.p12:pass https://www1.agenciatributaria.gob.e.../ws/VNifV2SOAP

Ahí dices que lo meta???... Y qué hace exactamente ese parámetro??

Gracias por tu interés y paciencia

ermendalenda 18-09-2025 19:29:11

Cita:

Empezado por Decanato (Mensaje 567862)
Ese parámetro se lo añado al comando curl??? Lo dices para hacer lo que me dijiste de renombrar el pfx a p12??

El curl que mando, cuando es con p12, es el siguiente:

curl.exe --connect-timeout 300 -m 300 -S -L -d "@DNI_CIF.xml" -o c:\sgb\xml\DNI_CIF_Respuesta.xml --cert-type P12 --cert Certificado.p12:pass https://www1.agenciatributaria.gob.e.../ws/VNifV2SOAP

Ahí dices que lo meta???... Y qué hace exactamente ese parámetro??

Gracias por tu interés y paciencia

-k se salta las comprobaciones de certificados(tanto del propio certificado de curl como deo servidor del sevicio al que llamas), ten en cuenta que curl tiene un certificado que dependiendo de la version, tambien caduca, con el parametro -k se va a saltar tambien esa verificaciom tu llamada, es correcta en el resto, pero agregale en los parametros -k
Para que quede... -k -S -L -d...
Te va aquitar algunos dolores de cabeza.
Ten en cuenta que algunos antivirus bloquean las llamadas ssl al puerto 443, como es wl caso de kaspersky. Tienes que verificar que tengas deaactivado ese filtro.

Decanato 18-09-2025 19:31:13

Cita:

Empezado por ermendalenda (Mensaje 567863)
-k se salta las comprobaciones de cerrificados,, es correcta la llamada que haces, pero agregale en los parametros -k
Para que quede... -k -S -L -d...
Te va aquitar algunos dolores de cabeza.
Ten en cuenta que algunos antivirus bloquean las llamadas ssl al puerto 443, como es wl caso de kaspersky. Tienes que verificar que tengas deaactivado ese filtro.

Muchas gracias!! Mañana lo probaré y os cuento

ermendalenda 18-09-2025 19:40:34

Cita:

Empezado por Decanato (Mensaje 567864)
Muchas gracias!! Mañana lo probaré y os cuento

por otro lado haz caso al post que te puso el compañero, dependiendo de como hayas generado el pfx (si es el original o lo has generado desde tu pc desde el almacen de certificados) puede que no tenga clave y solo te valga para tu máquina,
a curl le da igual la extensión y nombre de archivo que tengas, por poner un nivel mas de seguridad, cuando alojes el archivo cambiale a una extensión (o sin extensión) a otra que no tenga que ver con certificados.
Con "-cert-type P12 --cert ...." ya te va a mirar el contenido del archivo sin mirar que extensión tiene.

Yo suelo poner el path completo de los archivos de envios y respuestas para no tener que estar pendiente desde donde ejecuto la llamada.

si al final de la llamada le agregas "--trace "C:\...respuesta_trace.txt" en ese archvio de logs te hace un trace completo que te va a dar más pistas de donde puede estar el problema.
Además te recomiendo que te acostumbres a usar este trace, por que a veces curl no da respuestas cuando hay probelmas de conexion y con lo que te devuelva trace puedes "apañar" el control.

ermendalenda 18-09-2025 20:00:43

Más cosas,
Puede que en algún cliente te encuentres que no hay forma dd usar curl y esto es, muy probablemente por que el proveedor de servicios lo ha puesto en CG-NAT y la unica solucion es que el proveedor te saque(desactive) de cg-nat que ddben hacerlo obligatoriamente si se lo solicitas.

Esto hace unos años ocurria con provedores asequibles, pero ya se han subido al carro todos.
También me he encontrado algún router con filtros desde el operador, resetean parametros y a funcionar.

ermendalenda 18-09-2025 20:03:45

Cómo comprobar si tienes CG-NAT

1. Busca tu IP pública:

Entra en whatismyip.com o pon en Google: “cuál es mi IP”.

Apunta ese número (ejemplo: 84.123.45.67).



2. Mira la IP que te da tu router:

Entra en la configuración del router (suele ser 192.168.1.1 o 192.168.0.1).

Busca en “Estado de conexión WAN” o “Internet”.

Verás la dirección IP asignada por el operador.

3. Compara las dos:

Si son iguales : tienes IP pública (no CG-NAT).

Decanato 19-09-2025 09:24:47

Muchas gracias ermendalenda y delphi.com.ar por vuestro interés y aportaciones. A ver si voy probando cosas y os digo. ;)

Decanato 19-09-2025 10:27:50

Bueno, pues seguimos... Generé en mi equipo el pem y el key sin aparente problema, me pidió la contraseña, se la puse y me generó los dos ficheros. Paso los ficheros al equipo del cliente y pruebo a lanzar el curl siguiente:

curl.exe --connect-timeout 300 -m 300 -k -S -L -d "@c:\sgb\xml\DNI_CIF.xml" -o c:\sgb\xml\DNI_CIF_Respuesta.xml --cert c:\sgb\certificado.pem --key c:\sgb\certificado.key https://www1.agenciatributaria.gob.e.../ws/VNifV2SOAP --trace "C:\SGB\XML\TRACE.TXT"

Y nada, me da error siguiente:

curl: (58) schannel: Failed to import cert file c:\sgb\certificado.pem

Y el contenido del trace es el siguiente:

== Info: Host www1.agenciatributaria.gob.es:443 was resolved.
== Info: IPv6: (none)
== Info: IPv4: 195.77.198.17
== Info: Trying 195.77.198.17:443...
== Info: Connected to www1.agenciatributaria.gob.es (195.77.198.17) port 443
== Info: schannel: disabled automatic use of client certificate
== Info: schannel: Failed to import cert file c:\sgb\marysierra.pem, last error is 0x80092002
== Info: Closing connection

No sé si el problema puede estar aquí ("schannel: disabled automatic use of client certificate"), por lo que he buscado y me dice que "la configuración de seguridad de Windows (Schannel) no está configurada para seleccionar automáticamente un certificado de cliente para la autenticación en un sistema operativo Windows"... Y la pregunta sería cómo hago para configurar eso????

(Vaya pesadilla, macho... no me esperaba ni por asomo encontrarme esto al empezar con los clientes, cuando yo ya llevo varios meses enviando mis registros de facturación a producción sin problemas :()

Decanato 19-09-2025 11:22:01

Chicos, buenas noticias (creo)
Me acaba de funcionar en el cliente la verificación del DNI que he lanzado con curl, y funciona tanto renombrando el pfx a p12 como usando los ficheros pem y key.
He estado leyendo y buscando por ahí y he terminado encontrando que la versión de curl de windows 10 ha venido dando estos problemas, con lo que he actualizado curl a la versión 8.16.0 y va (parece) perfecto

De todas formas sigo haciendo pruebas y os confirmo cómo queda la cosa

ermendalenda 19-09-2025 11:30:08

Cita:

Empezado por Decanato (Mensaje 567883)
Chicos, buenas noticias (creo)
Me acaba de funcionar en el cliente la verificación del DNI que he lanzado con curl, y funciona tanto renombrando el pfx a p12 como usando los ficheros pem y key.
He estado leyendo y buscando por ahí y he terminado encontrando que la versión de curl de windows 10 ha venido dando estos problemas, con lo que he actualizado curl a la versión 8.16.0 y va (parece) perfecto

De todas formas sigo haciendo pruebas y os confirmo cómo queda la cosa

Es así, se me olvidó decirte que mejor descargarte una version de curl que vaya bien y la instalas(solo hay que meterla en una carpeta y ejecutar siempre curl desde ella) y así te olvidas, pero ojo, no se te van a actualizar solo los certificados de curl, por eso mete el parametro -k, si no en 2028 casi seguro que peta. Si lo haces de esa forma lo podras meter dn la instalacion directamente

Decanato 19-09-2025 11:51:16

Cita:

Empezado por ermendalenda (Mensaje 567885)
Es así, se me olvidó decirte que mejor descargarte una version de curl que vaya bien y la instalas(solo hay que meterla en una carpeta y ejecutar siempre curl desde ella) y así te olvidas, pero ojo, no se te van a actualizar solo los certificados de curl, por eso mete el parametro -k, si no en 2028 casi seguro que peta. Si lo haces de esa forma lo podras meter dn la instalacion directamente

Si, estoy poniendo -k en todos los comandos curl que utilizo en el programa, pero no entiendo eso de que "no se te van a actualizar solo los certificados de curl"... a qué te refieres??

ermendalenda 19-09-2025 12:04:16

Cita:

Empezado por Decanato (Mensaje 567886)
Si, estoy poniendo -k en todos los comandos curl que utilizo en el programa, pero no entiendo eso de que "no se te van a actualizar solo los certificados de curl"... a qué te refieres??

Sí, el comando curl utiliza certificados SSL/TLS para conexiones seguras, y estos certificados tienen una fecha de caducidad, lo que puede causar el error "cURL 60" si el certificado está expirado o no es válido.
Esos certificados sd hayan en un fichero de la instalación curl, y probablemente, si es el curl de windows, se autoactualicen, pero si es un curl que instalas tú, no se van a actualizar automaticamente, con -k te olvidas de tener que actualizarlo, ya que no va a usar la comprobacion de conexion segura.

Decanato 23-09-2025 10:52:40

Bueno, pues parece que la cosa van viento en popa con el tema certificados y curl. En definitiva los problemas que me encontré derivaban de la versión de CURL, estoy utilizando en los clientes la versión 8.16.0 y va perfecto, no me complico y se la pongo a todos. Si os digo una pequeña cosa, y es que yo que trabajo en VB.Net hay un detalle que igual le puede marear a alguien y es que desde la línea de comandos todas las pruebas van ok porque al meter el path del curl en las variables de entorno pues ya desde allí pilla la versión nueva, pero cuando se hace el shell desde el programa curiosamente no toma esas variables de entorno, ojo con eso... Con lo cual he parametrizado la ruta del curl que me interesa y me quito de historias.

Muchas gracias a todos y en especial a ermendalenda y delphi.com.ar por la ayuda y la paciencia que demostráis siempre, y más andando todos tan justo de tiempo como andamos.;)

rcarteaga 13-11-2025 17:55:47

Error
 
Buenas tardes. Siguiendo con el problema con los certificados.
He conseguido que funcione por fin al instalar la nueva version de CURL.
Pero algunos certificados me dan el siguiente error:

could not parse PKCS12 file, check password, LibreSSL error error:23FFF071:PKCS12 routines:CRYPTO_internal:mac verify failure


En el mismo pc unos me funcionan y otros me dan este error. Alguien puede darme una idea de como solucionarlo?

Gracias

ermendalenda 13-11-2025 18:14:46

Cita:

Empezado por rcarteaga (Mensaje 569796)
Buenas tardes. Siguiendo con el problema con los certificados.
He conseguido que funcione por fin al instalar la nueva version de CURL.
Pero algunos certificados me dan el siguiente error:

could not parse PKCS12 file, check password, LibreSSL error error:23FFF071:PKCS12 routines:CRYPTO_internal:mac verify failure


En el mismo pc unos me funcionan y otros me dan este error. Alguien puede darme una idea de como solucionarlo?

Gracias

Si has extraido y generado desde uno existente o has exportado, seguramente haya algún fallo en esa exportación y lp hayas generado sin contraseña, suponiendo que no te estes equivicando con la contraseña claro.
Si lo has expirtado con openssl seguramnete le has dejado sin contraseña cuando la pide en la generacion del pfx/pt2

rcarteaga 13-11-2025 18:18:44

Cita:

Empezado por ermendalenda (Mensaje 569797)
Si has extraido y generado desde uno existente o has exportado, seguramente haya algún fallo en esa exportación y lp hayas generado sin contraseña, suponiendo que no te estes equivicando con la contraseña claro.
Si lo has expirtado con openssl seguramnete le has dejado sin contraseña cuando la pide en la generacion del pfx/pt2

Muchas gracias
Es un certificado directamente generado en FNMT. También he probado a exportarlo con y sin clave.
La contraseña se que no es el problema, por que se la pongo mal aposta y el error es el mismo. Es como si no llega a entrar en los cdatos del certificado.

ermendalenda 13-11-2025 18:28:49

Cita:

Empezado por rcarteaga (Mensaje 569798)
Muchas gracias
Es un certificado directamente generado en FNMT. También he probado a exportarlo con y sin clave.
La contraseña se que no es el problema, por que se la pongo mal aposta y el error es el mismo. Es como si no llega a entrar en los cdatos del certificado.

La llamada a curl la haces apuntando al almacen dd certificados o al fichero?

rcarteaga 13-11-2025 18:35:55

Cita:

Empezado por ermendalenda (Mensaje 569799)
La llamada a curl la haces apuntando al almacen dd certificados o al fichero?

Al fichero. E inclui el parametro -k que aconsejabas anteriormente

ermendalenda 13-11-2025 19:14:29

Cita:

Empezado por rcarteaga (Mensaje 569800)
Al fichero. E inclui el parametro -k que aconsejabas anteriormente

Ok, le daré una vuelta.
Lo de -k también lenestoy dando una vuelta, por que lo hago sobre todo para saltarme la caduxidad del curl, pero es inswguro y no me fio que algun dia los envios con -k los bloqueen, nl por que lo detecten directamente, por que no se puede, pero puede provocar ciertos datos en la conexion que no le gistem de momento lo voy a dejar yp tambien, pero iré observando si curl va poniendo las actualizaciones de los certoficados para meterle una actualización automatica de los mismoa. Descargando desde h t t p s:/ /curl.se/ca/cacert.pem

ermendalenda 13-11-2025 20:58:28

Pon el comando tal cual lo pones (sim contraseñas)

ermendalenda 14-11-2025 06:30:27

Y si tienes instalado el openssl pon esto tambien y mndame del resultado: ojo, solo el encabezado.

openssl pkcs12 -info -in certificado.pfx

rcarteaga 14-11-2025 14:22:20

este es mi comando:
c:\CURL2\curl.exe -v "https://prewww1.aeat.es/wlpl/TIKE-CONT/ws/SistemaFacturacion/VerifactuSOAP" --cert-type P12 --cert "C:\Program Files (x86)\Certificados\certificado.p12":xxxxx -k -H "Content-Type: application/xml" --data-binary "@C:\Documentos-SAT\VeriFactu\2025\11\FA001530002\FA001530002.xml" --output C:\Documentos-SAT\VeriFactu\2025\11\FA001530002\FA001530002_respuesta.xml

Con algún certificado si funciona.
Uso la versión 8.17.0 de CURL, esta version usa libreSSL en vez de OpenSSL
me instalé OpenSSL, pero no se como hacer para que el CURL use OpenSSL en vez de LibreSSL

c:\curl\curl.exe version -V
curl 8.17.0 (x86_64-w64-mingw32) libcurl/8.17.0 LibreSSL/4.2.1 zlib/1.3.1.zlib-ng brotli/1.2.0 zstd/1.5.7 WinIDN libpsl/0.21.5 libssh2/1.11.1 nghttp2/1.68.0 ngtcp2/1.17.0 nghttp3/1.12.0
Release-Date: 2025-11-05
Protocols: dict file ftp ftps gopher gophers http https imap imaps ipfs ipns ldap ldaps mqtt pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp ws wss
Features: alt-svc AsynchDNS brotli CAcert HSTS HTTP2 HTTP3 HTTPS-proxy IDN IPv6 Kerberos Largefile libz NTLM PSL SPNEGO SSL SSLS-EXPORT SSPI threadsafe UnixSockets zstd

rcarteaga 14-11-2025 14:39:09

Cita:

Empezado por ermendalenda (Mensaje 569813)
Y si tienes instalado el openssl pon esto tambien y mndame del resultado: ojo, solo el encabezado.

openssl pkcs12 -info -in certificado.pfx


Este es el resultado:
MAC: sha1, Iteration 1024
MAC length: 20, salt length: 20
PKCS7 Data
Shrouded Keybag: pbeWithSHA1And3-KeyTripleDES-CBC, Iteration 1024
Bag Attributes
localKeyID: 32 23 0C E7 ED 55 CD 65 77 C3 AC 81 77 30 82 2D 94 B6 C5 01
friendlyName: xxxxxxx
Key Attributes: <No Attributes>

Y me pide la clave PEM , que no se que es ni cual es

Y es curioso, en un certificado que si me funciona. Al poner esto del openSSL no reconoce la contraseña, y de seguro que es correcta

ermendalenda 14-11-2025 14:44:23

Cita:

Empezado por rcarteaga (Mensaje 569845)
Este es el resultado:
MAC: sha1, Iteration 1024
MAC length: 20, salt length: 20
PKCS7 Data
Shrouded Keybag: pbeWithSHA1And3-KeyTripleDES-CBC, Iteration 1024
Bag Attributes
localKeyID: 32 23 0C E7 ED 55 CD 65 77 C3 AC 81 77 30 82 2D 94 B6 C5 01
friendlyName: xxxxxxx
Key Attributes: <No Attributes>

Y me pide la clave PEM , que no se que es ni cual es

Y es curioso, en un certificado que si me funciona. Al poner esto del openSSL no reconoce la contraseña, y de seguro que es correcta

La clave pen es la contraseña del certificado, está mal detallado por openssl

ermendalenda 14-11-2025 14:47:01

Prueba esto a ver si es que ese pfx esta generado con un sistema antiguo:
openssl pkcs12 -legacy -in certificado.pfx -info

ermendalenda 14-11-2025 14:47:39

Y dame wl error que te devuelve xon wl anterior comando openssl
Y pruwba a darle a enter wn la clave, si te funciona con enter, no tiene clave

rcarteaga 14-11-2025 14:58:35

Cita:

Empezado por ermendalenda (Mensaje 569849)
Y dame wl error que te devuelve xon wl anterior comando openssl
Y pruwba a darle a enter wn la clave, si te funciona con enter, no tiene clave

Lo primero muchas gracias por tu paciencia y tu ayuda.
Resumo un poco
El certificado A me funciona correctamente con CURL al enviar el XML a Verifactu
El certificado A con OPENSSL (al final no da error):
Enter Import Password:
MAC: sha1, Iteration 1024
MAC length: 20, salt length: 20
PKCS7 Data
Shrouded Keybag: pbeWithSHA1And3-KeyTripleDES-CBC, Iteration 1024
Bag Attributes
localKeyID: AF 4F D1 09 DA 5F 9E 7E 6F 16 AE 1B 2E CD 37 31 3D E0 2F 81
friendlyName: xxxx_NIF
Key Attributes: <No Attributes>

El certificado B da error al usar CURL para el envio a Verifactu
could not parse PKCS12 file, check password, LibreSSL error error:23FFF071:PKCS12 routines:CRYPTO_internal:mac verify failure
El certificado B con OPENSSL:
MAC: sha1, Iteration 1024
MAC length: 20, salt length: 20
PKCS7 Data
Shrouded Keybag: pbeWithSHA1And3-KeyTripleDES-CBC, Iteration 1024
Bag Attributes
localKeyID: 32 23 0C E7 ED 55 CD 65 77 C3 AC 81 77 30 82 2D 94 B6 C5 01
friendlyName: xxxx:NIF
Key Attributes: <No Attributes>

ermendalenda 14-11-2025 15:05:13

Si estas seguro de que estas usando la contraseña correctamente el certificado B, está corrupto.
Lo dice en el mismo error:.
could not parse PKCS12 file, check password
mac verify failure

Tiene la Mac rota
O se ha exportado con una proteccion openssl/libressl
Puedes peobar a regenerarlo
Ahora tw digo

ermendalenda 14-11-2025 15:08:57

Ejecuta este comando dd windows: certmgr.msc
Selecciona el certificado B
Exportalo, incluyendo la clave privada
Swlwcciona AES-256-SHA256 si te deja,
Ponle una xontraweña clara sin espaxios ni cafacteres especiales, que a ver ai es eso?
Guqrdalo como .pfx

Si esta dañada la Mac no te va a dejar

rcarteaga 14-11-2025 15:12:07

Gracias. Pedire que lo vuelvan a generar

rcarteaga 14-11-2025 15:13:57

Cita:

Empezado por ermendalenda (Mensaje 569853)
Ejecuta este comando dd windows: certmgr.msc
Selecciona el certificado B
Exportalo, incluyendo la clave privada
Swlwcciona AES-256-SHA256 si te deja,
Ponle una xontraweña clara sin espaxios ni cafacteres especiales, que a ver ai es eso?
Guqrdalo como .pfx

Ninguno de los 2 certificados estan instalados.
Pero he probado a instalar el B y se instalo, por eso se que la pwd es correcta.
EN principio ya hice lo que dijiste, pero lo intento de nuevo


La franja horaria es GMT +2. Ahora son las 22:33:53.

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