wiki:sobreFirmaElectronica:expressov3

Expresso V3 y firmas electrónicas

En el siguiente enlace se encuentra información respecto al uso de certificados electrónicos en Expresso V3:

http://comunidadeexpresso.serpro.gov.br/mediawiki/index.php/Admins/Certificados

Otro enlace más:

https://www.serpro.gov.br/linhas-negocio/certificacao-digital

Tutorial de certificados digitales en Expresso:

https://demonstra.serpro.gov.br/tutoriais/autenticacao_token_linux/html/index.html?mod=3

Es posible utilizar certificados en soporte de software (archivos .p12) y hardware a través de tarjeta inteligente o token USB configurado en el navegador web.

La funcionalidad de "criptografía de correo" utiliza un APPLET de Java, ver el siguiente enlace:

http://comunidadeexpresso.serpro.gov.br/mediawiki/index.php/Admins/Certificados#Habilitando_a_criptografia_de_Email

Descargué el código fuente Expresso V3 del siguiente enlace:

http://comunidadeexpresso.serpro.gov.br/portal/downloads/kristina.20150223.06.tar.bz2

Al descomprimir el archivo se obtiene la siguiente estructura:

aaraujo@moe:~/desarrollo/2015/correo/kristina.20150223.06$ ls -l
total 25204
drwxr-xr-x 11 aaraujo aaraujo     4096 abr  8 16:21 ActiveSync
drwxr-xr-x 15 aaraujo aaraujo     4096 abr  8 16:21 Addressbook
drwxr-xr-x 13 aaraujo aaraujo     4096 abr  8 16:21 Admin
drwxr-xr-x 10 aaraujo aaraujo     4096 abr  8 16:21 AppLauncher
-rw-r--r--  1 aaraujo aaraujo     1382 abr  8 16:21 bootstrap.php
drwxr-xr-x 16 aaraujo aaraujo     4096 abr  8 16:21 Calendar
-rw-r--r--  1 aaraujo aaraujo      690 abr  8 16:21 config.inc.php.dist
-rw-r--r--  1 aaraujo aaraujo      938 abr  8 16:21 CREDITS
drwxr-xr-x  2 aaraujo aaraujo     4096 abr  8 16:21 docs
drwxr-xr-x  3 aaraujo aaraujo     4096 abr  8 16:21 domains
drwxr-xr-x 18 aaraujo aaraujo     4096 abr 27 09:15 Expressomail
drwxr-xr-x  2 aaraujo aaraujo     4096 abr  8 16:21 fonts
drwxr-xr-x  6 aaraujo aaraujo     4096 abr  8 16:21 images
-rwxr-xr-x  1 aaraujo aaraujo      981 abr  8 16:21 index.php
-rw-r--r--  1 aaraujo aaraujo     1516 abr  8 16:21 init_plugins.php
-rw-r--r--  1 aaraujo aaraujo 25509982 abr 27 07:47 kristina.20150223.06.tar.bz2
-rwxr-xr-x  1 aaraujo aaraujo    24405 abr  8 16:21 langHelper.php
drwxr-xr-x 22 aaraujo aaraujo     4096 abr  8 16:21 library
-rw-r--r--  1 aaraujo aaraujo   132767 abr  8 16:21 LICENSE
drwxr-xr-x 12 aaraujo aaraujo     4096 abr  8 16:21 Messenger
-rw-r--r--  1 aaraujo aaraujo     3583 abr  8 16:21 plugin.php
-rw-r--r--  1 aaraujo aaraujo     9254 abr  8 16:21 PRIVACY
-rw-r--r--  1 aaraujo aaraujo     1282 abr  8 16:21 README
-rw-r--r--  1 aaraujo aaraujo     1164 abr  8 16:21 RELEASENOTES
drwxr-xr-x 12 aaraujo aaraujo     4096 abr  8 16:21 Setup
-rwxr-xr-x  1 aaraujo aaraujo      373 abr  8 16:21 setup.php
drwxr-xr-x 13 aaraujo aaraujo     4096 abr  8 16:21 Tasks
drwxr-xr-x  5 aaraujo aaraujo     4096 abr  8 16:21 themes
-rw-r--r--  1 aaraujo aaraujo     2426 abr  8 16:21 tine20.php
drwxr-xr-x 49 aaraujo aaraujo     4096 abr  8 16:21 Tinebase
drwxr-xr-x  8 aaraujo aaraujo     4096 abr  8 16:21 vendor
drwxr-xr-x 13 aaraujo aaraujo     4096 abr  8 16:21 Webconference
-rw-r--r--  1 aaraujo aaraujo      485 abr  8 16:21 worker.php
drwxr-xr-x 19 aaraujo aaraujo     4096 abr  8 16:21 Zend

Luego en el directorio Expressomail se encuentra el archivo:

-rw-r--r-- 1 aaraujo aaraujo 10895 abr  8 16:21 Smime.php

En el archivo Smime.php se implementa todo el proceso de verificación de un correo electrónico firmado.

Se está utilizando el estándar SMIME (https://es.wikipedia.org/wiki/S/MIME) a través de llamadas a funciones de PHP. La verificación de un correo electrónico firmado se realiza a través de:

openssl_pkcs7_verify — Verifica la firma de un mensaje S/MIME firmado (https://php.net/manual/es/function.openssl-pkcs7-verify.php)

En algunos casos se hacen llamadas a sistemas en PHP para ejecutar el comando openssl como en el siguiente caso:

...
$w = exec('cat ' . $msgTempFile . ' | openssl smime -pk7out | openssl pkcs7 -print_certs',$output);
...

Para la firma electrónica se utiliza un applet de Java. Encontré un repositorio de github con los códigos:

https://github.com/ComunidadeExpresso/expressolivre/tree/master/security/ExpressoCertMail

No estoy seguro si son los que se utilizan con Expresso V3.

En el archivo Expressomail/js/Expressomail-FAT.js descargado se hace una llamada

a la función signMessage:

...
try{
	document.getElementById("SignatureApplet").signMessage(Tine.Expressomail.fixIEUserAgent(),this.id,c)
}
...

Se carga el applet de java para ejecutar la firma.

En un mensaje del foro de Expresso se describe la manera en que se realiza la firma electrónica en Expresso V3:

http://comunidadeexpresso.serpro.gov.br/portal/index.php?option=com_kunena&view=topic&catid=5&id=249&mesid=1282&Itemid=482&lang=pt-BR

En general:

A aplicação web se comunica através da applet através dos métodos:

  1. signMessage
  2. encryptMessage
  3. decryptMessage
  4. verifyMessage

En el siguiente enlace Expresso V3 Segurança com Certificaçao Digital hay una descripción oficial sobre Expresso V3 y la certificación digital.

Last modified 9 years ago Last modified on Apr 27, 2015, 10:47:47 AM