Open AbrahamUdevs opened 2 months ago
Hola, en Windows lo que puede suceder es que en openssl-modules falte legacy.dll. Ver esta nota para más información:
https://github.com/php/php-src/issues/9890#issuecomment-1303855417
Agradecería si pudiera confirmar si la solución propuesta le funciona en su caso. No olvide definir o redefinir OPENSSL_MODULES como variable de entorno.
Como referencia para lo que menciona del openssl.cnf que puede servir a más personas como complemento a este ticket: https://github.com/php/php-src/issues/12369#issuecomment-1756473904 Además de este comentario en la documentación: https://www.php.net/manual/es/function.openssl-pkcs12-read.php#128941
Con respecto a su mención sobre el uso de OpenSSL por línea de comandos, a partir de la versión 3, si desde consola quiere extraerlo debe agregar el parámetro -legacy para extraerlo de manera manual, creo que independientemente de si modificó el .cnf o no. Vea la nota https://www.php.net/manual/es/function.openssl-pkcs12-read.php#128992 para un ejemplo de conversión.
¡SOLUCIONADO! Muchas gracias, tuve que tener hacer un par de revisiones porque hice mal el procedimiento. Pero terminó funcionando. Muchas gracias, otra vez.
Como resolviste el problema ? me esta sucediendo lo mismo gracias
Saludos.
Describa el problema (bug) El problema consiste en que la API es incapaz de firmar el xml que envío (Ocurre tanto a la hora de hacer la petición dentro del sistema como a la hora de hacerla a través de POSTMAN). Siempre que intento hacer una petición a la API con cualquiera de los métodos, el sistema retorna "Error: No se puede leer el almacén de certificados o la clave no es la correcta", a pesar de que yo incluyo todos los parámetros solicitados en la documentación.
Pasos para reproducir Realizar llamados normales a la API según la documentación (Puede ser desde el sistema o POSTMAN)
Versión API: 3f0855f9
Sistema operativo: Windows
PHP versión: 8.3.10
MySQL versión: 10.4.32-MariaDB
Comportamiento esperado
Capturas de pantalla o registro de bitácora El error ocurre en: Donde con openssl_error_string() se obtiene el error: "error:0308010C:digital envelope routines::unsupported"
Contexto adicional Según parecer ser, las llaves privadas generadas por Hacienda tienen propiedades de encriptación que están obsoletas hoy en día, y muchas de las herramientas de extracción de llaves y certificados no ofrecen soporte. Entre ellas, parece estar Openssl, porque inclusive, cuando intento extraer su certificado usando Openssl desde la terminal, esta retorna el error:
"Error outputting keys and certificates 74450000:error:0308010C:digital envelope routines:inner_evp_generic_fetch:unsupported:crypto\evp\evp_fetch.c:355:Global default library context, Algorithm (RC2-40-CBC : 0), Properties ()"
Openssl versión: 3.3.1 4
El sistema ha sido instalado en un servidor Artisan usado por una aplicación de Laravel
Hay una solución rondando por ahí que dice que debo activar el Legacy Provider en el openssl.cnf, pero esta ya me ha dejado claro que no es efectiva.
Muchas gracias.