ctt-gob-es / clienteafirma

Cliente @firma
http://administracionelectronica.gob.es/ctt/clienteafirma
257 stars 121 forks source link

Error al intentar firmar utilizando OpenJDK 17 #381

Open TortitasT opened 8 months ago

TortitasT commented 8 months ago

Me aparece el siguiente error utilizando OpenJDK 17 en un MacOS M1.

Al cambiar la versión del JDK a la 8 me ha funcionado correctamente.

No encuentro información sobre la versión que se recomienda usar para ejecutar este programa.

java.security.ProviderException: No se ha podido inicializar el proveedor de DNIe
      at es.gob.jmulticard.jse.provider.DnieProvider.<init>(DnieProvider.java:116)
      at es.gob.jmulticard.jse.provider.DnieProvider.<init>(DnieProvider.java:92)
      at es.gob.afirma.keystores.AOKeyStoreManagerHelperFullJava.initDnieJava(AOKeyStoreManagerHelperFullJava.java:94)
      at es.gob.afirma.keystores.AOKeyStoreManager.init(AOKeyStoreManager.java:242)
      at es.gob.afirma.keystores.AOKeyStoreManagerFactory.getDnieJavaKeyStoreManager(AOKeyStoreManagerFactory.java:323)
      at es.gob.afirma.keystores.AOKeyStoreManagerFactory.getAOKeyStoreManager(AOKeyStoreManagerFactory.java:149)
      at es.gob.afirma.standalone.SimpleKeyStoreManager.getKeyStoreManager(SimpleKeyStoreManager.java:161)
      at es.gob.afirma.standalone.SimpleKeyStoreManager.getKeyStore(SimpleKeyStoreManager.java:58)
      at es.gob.afirma.standalone.SimpleKeyStoreManagerWorker.doInBackground(SimpleKeyStoreManagerWorker.java:43)
      at es.gob.afirma.standalone.SimpleKeyStoreManagerWorker.doInBackground(SimpleKeyStoreManagerWorker.java:20)
      at java.desktop/javax.swing.SwingWorker$1.call(Unknown Source)
      at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
      at java.desktop/javax.swing.SwingWorker.run(Unknown Source)
      at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
      at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
      at java.base/java.lang.Thread.run(Unknown Source)
Caused by: es.gob.jmulticard.apdu.connection.ApduConnectionException: No se ha podido abrir la conexion con el lector de tarjetas numero 0
      at es.gob.jmulticard.jse.smartcardio.SmartcardIoConnection.open(SmartcardIoConnection.java:260)
      at es.gob.jmulticard.card.dnie.Dnie.connect(Dnie.java:320)
      at es.gob.jmulticard.jse.provider.DnieProvider.<init>(DnieProvider.java:112)
      ... 15 more
Caused by: javax.smartcardio.CardException: connect() failed
      at java.smartcardio/sun.security.smartcardio.TerminalImpl.connect(Unknown Source)
      at es.gob.jmulticard.jse.smartcardio.SmartcardIoConnection.open(SmartcardIoConnection.java:254)
      ... 17 more
Caused by: sun.security.smartcardio.PCSCException: SCARD_W_UNRESPONSIVE_CARD
      at java.smartcardio/sun.security.smartcardio.PCSC.SCardConnect(Native Method)
      at java.smartcardio/sun.security.smartcardio.CardImpl.<init>(Unknown Source)
      ... 19 more
ogarcia commented 8 months ago

No esta detallado en ningún lado, pero con Java 11 funciona y con Java 17 no funciona. En Arch Linux lo tenemos fijado para ejecutar con Java 11.

TortitasT commented 8 months ago

¿Debería aparecer en el README quizás? No conozco el proyecto bien así que tampoco me atrevo a hacer un PR ^^'

Mi intención es que si otra persona que esté utilizando un Mac con una LTS de Java como la 17 o la 21, se baja la aplicación desde la página tenga alguna pista, ya que la excepción no dice nada.

ogarcia commented 8 months ago

¿Debería aparecer en el README quizás?

Desde mi punto de vista si, sin duda. La documentación de este proyecto brilla por su ausencia.

No conozco el proyecto bien así que tampoco me atrevo a hacer un PR ^^'

Ni te molestes. No vale de nada. Simplemente echa un vistazo a como están las PR actuales y las incidencias para hacerte una idea.

De hecho ni siquiera ellos lo tienen claro, si miras el paquete Debian que distribuyen en él recomiendan Java 17 (y lo hacen depender de libnss3-tools cuando debería ser una recomendación ya que solo lo necesitas si quieres leer el certificado de una smart card):

Package: autofirma
Architecture: all
Section: utils
Priority: optional
Depends: libnss3-tools
Recomends: openjdk-17-jre 

La verdad es que es una pena que esto no este mejor llevado porque al final no es mal software. Pero se nota mucho que simplemente van a cumplir los objetivos del contrato sin mas y que tanto los usuarios como los posibles colaboradores importan poco o nada.

quilosaq commented 8 months ago

Me aparece el siguiente error utilizando OpenJDK 17 en un MacOS M1.

Al cambiar la versión del JDK a la 8 me ha funcionado correctamente.

No encuentro información sobre la versión que se recomienda usar para ejecutar este programa. ...

@TortitasT

Aquí tienes el manual de instalación para Autofirma 1.8.2: https://administracionelectronica.gob.es/ctt/resources/Soluciones/138/Descargas/AF-manual-instalacion-usuarios-ES-1-8-2.pdf?idIniciativa=138&idElemento=11402

Del manual anterior: "En entornos macOS y Windows no es necesario tener instalado un entorno de ejecución de Java. En Linux se necesita un entorno de ejecución de Java 11 de Oracle u OpenJDK 11..."

LucasFA commented 8 months ago

@ogarcia Si estás interesado, la documentación, técnicamente, está aquí, en archivos docx :upside_down_face: https://github.com/ctt-gob-es/clienteafirma-docs

En su momento hice una PR con un script de pandoc para pasarlos a markdown y de ahí hacer algún deployment para convertirlos en documentación en la web, pero no recibió atención y bueno, ahí anda

ogarcia commented 8 months ago

la documentación, técnicamente, está aquí, en archivos docx 🙃

Hostias, normal que no supiese de ella... docx en repositorio... :shrug:

Me quedo con tu PR que esta muy guay. ¡Gracias mil!

LucasFA commented 8 months ago

O sea, la distribuyen docx a docx individualmente junto con cada producto relevante, pero cuando me encontré el repo no sabía qué era cada cosa, la verdad. Me alegra de que te sirva!