LibreDTE / libredte-lib-core

LibreDTE: Biblioteca PHP (Núcleo)
https://lib-core.docs.libredte.cl
GNU Affero General Public License v3.0
196 stars 156 forks source link

Array de certificados "extracerts" #56

Closed erikn69 closed 6 years ago

erikn69 commented 6 years ago

al leer los datos de la firma electronica con openssl_pkcs12_read devuelve un arreglo de extracerts, en $this->certs['extracerts'], lo cual dependiendo de la caducidad cambia el Modulus, Exponent, y eso no se toma en cuenta en el firmado para signaturevalue, sale firma invalida

estebandelaf commented 6 years ago

No hemos tenido casos rechazados por el SII por lo indicado, la firma se genera válida (a lo menos como el SII la espera).

Respecto al rechazo ¿cuál fue el caso de prueba? ¿El rechazo se determinó con respuesta del SII o validando por otro lado la firma?

erikn69 commented 6 years ago

Bueno si no hay rechazo en el SII esta bien, probe con una firma del BCE, otro pais en la que trae dos pkey una Decryption Key, y otra Signing Key, en ese orden, y al firmar toma la Decryption Key, lo que da como resultado firma invalida, es un error de openssl_pkcs12_read me imagino

estebandelaf commented 6 years ago

En este artículo los autores hicieron un análisis al proceso de firmado para el SII, quizás hay alguna diferencia con como se realiza en otros lados:

https://www.cryptosys.net/pki/xmldsig-ChileSII.html

(el firmado de LibreDTE de desarrolló en base a ese artículo)

erikn69 commented 6 years ago

Bueno cuento la solución en caso de que sea útil, recorrí los certificados buscando el que este vigente a la fecha, y busque la private key q va a la par, y ahi con esos dos ya sale firmado correctamente, es un problema de openssl_pkcs12_read, la unica solucion que encontre es hacer eso manualmente