Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/alfem/FireFirma
Browse files Browse the repository at this point in the history
  • Loading branch information
alfem committed Nov 10, 2022
2 parents d101f5e + 50de68f commit 4b5751c
Showing 1 changed file with 30 additions and 0 deletions.
30 changes: 30 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,33 @@ Firmar electrónicamente con un sólo fichero ejecutable. Sin dependencias.
Descarga la última version desde:

https://github.com/alfem/FireFirma/releases


## Componentes
![Diagrama de Componentes](https://raw.githubusercontent.com/alfem/FireFirma/master/Componentes-FireFirma.png)

(Diagrama realizado con [Draw.io](https://www.draw.io/?lightbox=1&highlight=0000ff&edit=_blank&layers=1&nav=1&title=Componentes%20FireFirma#R7Vttc5s4EP41nrn7EA9CvPlj7KR3c9dOO5PLXHvfZBBGDUYU5MS%2BX38SiBcBdnBsg9O5pjO2FgnE7rPP7kryBC7W298SFAefqIfDia552wm8m%2Bg6AA7kH0KyyyVWIVglxJOdKsED%2BRdLoSalG%2BLhVOnIKA0ZiVWhS6MIu0yRoSShL2o3n4bqU2O0wi3Bg4vCtvRv4rEglzq6Xcl%2Fx2QVFE8G1iy%2FskZFZ%2FkmaYA8%2BlITwfsJXCSUsvzbervAoVBeoZd83Ic9V8uJJThifQaQxWr9%2BHD3j%2FO4XN6kxo%2Fvf34MbqB8j2cUbuQbT3Qr5Dece%2BSZf12JrwucMOK7fP7FxWVSXCsk%2FMG1ER03ud0w%2BoEka7RvRKYktis0z%2FUVi68RZfxj%2FhIQhh9i5ArZCwcblwVsHfIWEBNC7tMqoZvI%2B7xhIYmwlHsoefrMRxEmAKhNNbN81jN%2FK7zdq01Q2oiDG9M1ZsmOdykGmNKsEtemI9svNZRIUVAHiCaFSAJzVd66sh3%2FIs13hCmB0TLlH%2BgZtfSaKQl7Uj%2BvqPUMmoJWQ1Om2dIU0DtUZV1KU9BsKQV73OtlkyYsoCsaofC%2Bks4rtWm8VfX5SGkslfUdM7aTFIY42lVV4i1hXzMM6qZsfqtdutvKW2eNnWzkExWzO6x9%2FjJ0k7j4ED4ke6Jkhdkh7cBucyY4RIw8qxM5u20MfRTbRHzuX%2BuNb5mlzKJZWSdrjWgeMBvTPKDFMZzSsU%2B3Lau9QiwojfNw7ZOtsNzcJ2G4oCFNsuHQQ9jxXS5PWUKfcO2K5Tp46V%2BGm4w2iXdSUyk8P%2F7%2Fj8dvs6SpGBLMxg7HujVqkKlFGElje2PMPvKDw5Gf2Zf8zDHJz2z5pvAhP%2FehM9OfiR3P6KI%2FR19CyzqT09gN%2BrM7%2BE8b1G2OqEdInQBfpbu8MD2BLx%2FTDUrIEYz7rvjTBioUIBybQJ0%2BSDjBnicMreEvPQKAp%2BFPcE1CPCSWQ%2FqOuU9jNFnAyRzQEKU%2FKXRnKnLLunG80D9yfVkvL8tofzj010qdsigdqO55J4VPu%2FK5Gjq6DdfIFW5%2BO4uOoqNBueikB5aM65KMz2D%2FFz2Z9dwdJzEPJz2YL%2Ffhj8vXqPAMrAcapWu5Yl7P3UAX75kXW4HUr9dHrsrjrjPBaCS43f2HsNFFh74rJ7eAPTWvzs3bdfB7cpEjQpxfXx57Ayp%2Fmcb%2B9tefFJs6UJHZuXgwLDIN0NLhgIl38f2oNbcbXgfxuKksvBnWbHI4%2F85aX3BCuN4ELs6elDt9k3J91KS81xpBSJYp9Rl9iuA03RveGrgZepfUaCzF6WbPrYiL7ZLq%2Bysen%2FKXEmcuilVJ68eG5mqE8%2ByvLso1HANw80TYDUs2KVPtkN%2FuSgxRKnmn6nc0O4BZT5BHaeo%2BLcn1YlzXVNWWKzDjYRx26LYZQSLvVhwkEoE4RGlK3G76V7dc9MP8f3aubiu9plSzQ6eFrDdTyyd8oSRz%2FoK3jAZvOQ1b5fOXoypzvXojYOnqjfJY1LoRtw3a1brFokN6xIQtswGj%2FI4VqEqdnnDiRLsUzuyeeQbvqSQZ7yXB2LPhNxC4bW0KgQYNw9Ft07GgihzbnJaXdM1%2BK%2B5n01ntn6N6gQ2Uq7NhfGI2hE%2BMs0FeOQSEikuITFzXR%2FYLCE%2Fzi2HybtgOm59QhL%2FzWpzXuFq2EBUnlFGRIYoJ5IU0vBWPFf9HTkQguLZkG3ZVMvsDRERFJT%2F3UBqUausGuaYrGzu8LrWdt2C8dnoRwFoEAlNNg4dDEG9c0GOMng6Tn3QeLZKogLObSyB9o0Vjr9Nu7mGeKSCYuvIYUz1afqF40K5z7vASR1mhSSKXeCRp%2BUS5RIbCkG7Y6%2BwR15AoB9XAOY9pShihkZ5HCOdchY%2BiTmP0mtLoykdbNSV%2FQcQ7bVIkWN1924KrmEtKUobFSiqfrRbRIkSUR0dPXR%2B9auODVtXbNr41qPG7it5c4QEolC1s0zwdWl3tWo%2Bn65hHpYiJLWEtwi5OxW5SmutK4ChEuc3FPbX7ELsskXu5HFSZl0d1UGhCh%2BUh1ekQu0gBY%2BJnRTJNIel05fHPLlVc30YWByhT0a4eHZQpQ%2F2coRSl4kxOtOICs2r9leXTN7q2x6so9wk%2FzJKRgHgep%2Blmcn4G17EaeVrnT0dmHb4DiuPARzgPb1Y%2FxsqDWvWTNnj%2FHw%3D%3D))

Para poder realizar firmas electrónicas en páginas web usando la aplicación del Ministerio de Hacienda *AutoFirma*, hay que poner de acuerdo un buen puñado de componentes:

### El navegador web:
AutoFirma funciona con Chrome y Firefox. Yo me quedo con este último porque lo conozco mejor y puedo indagar en sus tripas. Cada versión nueva trae *sorpresas* y es normal que si firmas con una versión, con la siguiente ya no. Casi siempre es porque el método de almacenar certificados cambia o porque se vuelve más exigente/quisquilloso con la seguridad. Pero este navegador... firma.

### AutoFirma:
La aplicación desarrollada por el Ministerio de Hacienda para evitar los applets en Java y poder firmar documentos de forma independiente, como un programa más de tu escritorio. El código es un poco *meh*, pero al menos es software libre, [está publicado en GitHub](https://github.com/ctt-gob-es/clienteafirma) y se puede comprobar como funciona. Ojo con la versión de Java que requiere. Si tu sistema operativo lleva de serie una versión de Java demasiado moderna, es muy posible que AutoFirma no funcione. La última versión de AutoFirma (1.6.5) va bien con Java 11. Si tienes la anterior, necesitarás Java 8.

### Manejador de protocolo afirma:
Cuando una web quiere que firmes algo, te manda una url que empieza por *afirma://*. Como esta url no es estándar, el navegador no sabrá que hacer con ella. Es necesario que tengamos instalado un pequeño fichero que indica la relación entre estas urls y el programa AutoFirma. Normalmente estará en */usr/share/applications/afirma.desktop* y contendrá una línea que dice algo como MimeType=x-scheme-handler/afirma;
Puedes comprobar que esta relación funciona tecleando en el navegador una dirección *afirma://meloinvento*. Debería aparecer una ventana ofreciéndo abrir AutoFirma.

### Almacén de Certificados de AutoFirma:
Una vez que el navegador ha reconocido la url y ha llamado al programa AutoFirma, éste se queda calladito trabajando 'en background' e intenta abrir un canal seguro para comunicarse con el navegador. Este canal seguro depende que de ambas partes confíen en la otra y para eso usan un certificado nuevecito que se genera durante la instalación de AutoFirma. El certificado debe estar disponibile para la aplicación Autofirma, que lo buscará en */usr/lib/AutoFirma/autofirma.pfx*, y para Firefox, que lo buscará en su propio almacén de Certificados. Si no coinciden, porque tenemos más de uno, porque la instalación falló o la hemos hecho varias veces, o vete tú a saber, no podremos firmar desde la web. El navegador desistirá al cabo de unos segundos y posiblemente mostrará algún error.

### Almacén de Autoridades de Certificación:
Firefox puede usar los certificados almacenados en varios sitios: en su propio almacén (que viene de serie), en el del sistema operativo, en el del usuario, en una tarjeta criptográfica, en un pendrive... etc. Lo importante es que debe encontrar el certificado de AutoFirma o no podrá comunicarse con la aplicación. El instalador oficial de AutoFirma coloca este certificado en el directorio del usuario. Suele funcionar, pero si se crea un nuevo usuario o un nuevo perfil después de haber hecho ésta instalación, estos no podrán firmar nada. Parece por tanto preferible instalar el certificado de Autofirma en el propio sistema operativo, de forma que esté disponible para todos los usuarios y perfiles, actuales y futuros. Para eso hay que 'engañar' un poco a Firefox cambiando la librería que usa para acceder a sus Autoridades de Certificación (*libnssckbi.so*) por otra que usa las Autoridades del sistema (*p11-kit-trust.so*).

### Almacén de Certificados del Usuario:
Por último necesitaremos el Certificado de la persona que va a firmar, y que se carga desde Firefox con el *Menú->Preferencias->Privacidad y Seguridad*. Abajo a la derecha hay un botón *Ver Certificados* que abre una nueva ventana. Eliges la solapa *Sus Certificados* e importas tu certificado personal.



0 comments on commit 4b5751c

Please sign in to comment.