Comunidad Gambas-es
Componente para crear public key infrastructure (PKI) - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Gambas (https://gambas-es.org/forumdisplay.php?fid=3)
+--- Foro: Aplicaciones/Fragmentos de Código (https://gambas-es.org/forumdisplay.php?fid=8)
+--- Tema: Componente para crear public key infrastructure (PKI) (/showthread.php?tid=562)



Componente para crear public key infrastructure (PKI) - Carlos - 01-09-2021

Con este componente es posible crear y mantener una estructura de autoridad de certificación completa.
No es global trust, pero tampoco lo pretende. El caso es que se puede integrar en un script o lo que sea porque no tiene requerimientos gráficos ni nada. Simplemente creas la root CA, si quieres intermediate CA y te pones a expedir certificados.

Se pueden expedir certificados X509 para client, server, codesigning, ocsp y timestamp.

Los certificados timestamp no son muy populares, pero los veo interesantes para los que programáis profesionalmente porque permiten ponerle una marca de tiempo a un log o algo así.

Los certificados codesigning pueden ser interesantes pero eso depende de como distribuyáis vuestro software a clientes, etc.

En fin aquí está el componente y aunque es pequeño y lo he probado aún no lo ha probado nadie más que yo y eso siempre puede generar problemas. Tal vez alguno adicional al pasarlo de conjunto de clases a un componente.

Aquí lo tenéis. En la carpeta doc hay manuales si queréis echar un vistazo.

https://gitlab.com/kabronsete/mypki


RE: Componente para crear publi key infrastructure (PKI) - tincho - 02-09-2021

(01-09-2021, 23:00)Carlos escribió:  En fin aquí está el componente y aunque es pequeño y lo he probado aún no lo ha probado nadie más que yo y eso siempre puede generar problemas

Carlos, no estoy en el tema de los certificados y de momento estoy algo falto de tiempo para ponerme a investigarlo, pero explicado de forma sencilla ¿Para que sirve esto? ¿En que se aplica?

Gracias por compartir el programa, veo que escribís en  la lista internacional también, bueno te felicito por la iniciativa.

Saludos.


RE: Componente para crear publi key infrastructure (PKI) - Carlos - 02-09-2021

Si me has leído es que también tú estás je je je.
Me he ofrecido para desarrollar el componente gb.openssl que está en C y accede a librerías de openssl. Opinan que el componente está bien pero como es un front-end de openssl no les parece bien que sea un componente de gambas.
Lo comprendo. Me da igual, pero este ya funciona y el otro está por hacer. Como eso de escribir en C con el VI es lo que más me divierte lo voy a hacer.

Respecto a los certificados los hay para muchas cosas. Tú sabes que hay certificados de cliente y servidor para acceder a páginas web. Esos certificados valen para cualquier servicio: acceso a base de datos, web, ftp, lo que quieras. Seguro que entiendes la utilidad de poner certificados para accceder a una página web.

Hay otros certificados menos conocidos. El de timestamp en la práctica es como poner un sello en una hoja. Sobre ese documento pone un sello con una fecha y hora. Tiene muchas utilidades. El más fácil de ver es un log. Imagina que tu aplicación ha creado un log donde ha quedado una prueba de un delito informático. Tu cliente quiere denunciar. Ante un juez ese log es una prueba relativa porque al fin y al cabo es un texto que puede haber sido manipulado. Si tu aplicación cada vez que genera un log también genera un certificado timestamp y firma con él el dichoso log esa misma prueba ahora es mas interesante para el juzgado, porque ya no puede haber sido manipulado. Es un ejemplo, tiene muchas mas aplicaciones que un log ante un juez pero sirve para entenderlo.

Un certificado s/mime es para cifrar documentos. Imagina que tienes un plano de autocad, una hoja de excel, un pdf, ... que quieres poder enviar por correo seguro sin que nadie pueda ver su contenido. Pues firmas tu pdf y lo envías por correo. La otra parte si tiene el certificado correcto podrá leerlo y si no, no podrá.

Con este componente tú podrás incluir en tus aplicaciones o scripts la capacidad de crear certificados, utilizarlos para firmar algo o permitir el acceso a algo. Si tienes esa necesidad en algún script o aplicación es mucho más sencillo expedir el certificado con validez digamos un año y firmar algo con él que andar escribiendo código para garantizarte que sólo aquellos que cumplen la condición en el plazo estipulado acceden a tu información.  Te ahorras trabajo y es muy seguro.

Para muchas personas estas cosas no sirven de nada, para otras son muy útiles porque en vez de andar escribiendo código llaman a la función que genera certificado y luego llaman a la función que firma lo que tu quieres. Dos líneas de código y te olvidas.