Instalar pyxmlsec – Biblioteca de seguridad XML de Python en Ubuntu
El cifrado XML y la firma digital se utilizan para la seguridad de los documentos XML. Existe implementación de cifrado XML y firma digital para diferentes lenguajes de programación. Sin embargo, la implementación del cifrado XML y la firma digital en C el lenguaje es muy completo. Es compatible con muchas funciones y se basa en la biblioteca LibXML2. PyXMLSec es la implementación de Python para las características de seguridad XML; sin embargo, todavía no admite todas las funciones. La versión actual de la biblioteca admite los siguientes estándares de seguridad XML en Python.
a) Firma XML y cifrado
b) XML canónico
Requisito previo para la biblioteca PyXMLsec
La biblioteca PyXMLSec requiere los siguientes paquetes para la instalación.
1) Python 2.2 o superior
2) LibXML
3) Biblioteca de seguridad XML
Python ya está instalado en la distribución de Ubuntu. LibXML se puede instalar escribiendo el siguiente comando en el terminal que se muestra en la Figura
$sudo apt-get install python-libxml2
La biblioteca de seguridad XML se puede instalar usando el siguiente comando en la terminal. La instalación de la biblioteca XML se muestra en la siguiente instantánea.
$sudo apt-get install libxmlsec1-dev
La instalación de la biblioteca de desarrollo C se muestra en la siguiente figura.
$sudo apt-get install libxml-security-c-dev
La implementación de Python de seguridad XML se instala utilizando el terminal que se muestra a continuación, que también se muestra en la figura.
$sudo apt-get install xmlsec1
Después de la instalación de las dependencias, descargue la versión reciente de PyXMLSec (0.3.1) usando el siguiente comando en el directorio de Descargas. Figura siguiente que muestra el proceso de descarga.
$cd Downloads $sudo wget labs.libre-entreprise.org/frs/download.php/897/pyxmlsec-0.3.1.tar.gz
Tenemos que compilar PyXMLSec desde el paquete fuente porque los paquetes deb (paquete binario) no están disponibles. Extrae el descargado pyxmlsec-0.3.1.tar.gz paquete usando el siguiente comando en la terminal.
$ sudo tar -xvzf pyxmlsec-0.3.1.tar.gz
Vaya dentro del directorio extraído usando el comando cd que se muestra en la figura.
$cd pyxmlsec0.13.1
Una vez dentro del directorio raíz del paquete, ejecute sudo setup.py en el terminal para la instalación de PyxmlSec. El proceso de instalación de PyXMLSec se muestra en la siguiente figura. Seleccione la opción 1 para construir PyXMLsec desde la fuente. La biblioteca PyXMLsec admite motores de cifrado OpenSSL, NSS y GnuTLS. OpenSSL es un motor de cifrado muy conocido que normalmente se instala en casi todas las distribuciones de Linux.
$sudo ./setup.py
Después de completar el paso de compilación, ejecute nuevamente el mismo comando y seleccione la opción 2 para la instalación de la biblioteca que se muestra a continuación.
Ejemplo
Hay pocos ejemplos disponibles en el Sitio web de PyXMLsec en la sección de documentación. Hemos seleccionado ejemplos de firma XML (sign3.py) y verificación (verify3.py) para fines de demostración. El ejemplo de firma requiere el archivo de entrada (en nuestro caso document.xml) en formato XML, claves y certificados en formato PEM. Entonces, en primer lugar, se requiere un par de claves y un certificado autofirmado en el proceso de firma. OpenSSL es una utilidad ampliamente utilizada para la generación de certificados y pares de claves RSA. El siguiente comando genera un par de claves RSA con un tamaño de 2048 bits y se almacena en el archivo «key.pem». También almacena el certificado X509 en el archivo cer.pem.
#openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365
Firma XML
Después de la generación de claves y certificado, el siguiente paso es firmar el archivo de entrada. El ejemplo de firma XML toma argumentos en el siguiente formato del usuario.
#./sign.py <xml-doc> <key-file> <cert-file>
En nuestro caso, el archivo de entrada para la firma XML es document.xml y la firma del archivo resultante almacenada en output.xml archivo que se muestra a continuación.
#./sign.py document.xml key.pem cert.pem > output.xml
Verificación XML
En este paso, el ejemplo de verificación XML toma el archivo output.xml con certificados para la verificación de firmas XML. El ejemplo de verificación XML toma argumentos en el siguiente formato del usuario.
#./verify.py <signed-file> <trusted-cert-pem-file1> [<trusted-cert-pem-file2> [...]]
En nuestro caso, el archivo de entrada para la verificación XML es output.xml y lo verifica que se muestra a continuación.
#./verify.py output.xml cert.pem
Conclusión
Espero que hayas disfrutado de este artículo. Para agregar, PyXMLsec es una implementación de Python de seguridad XML que proporciona cifrado y firma digital para documentos XML. Es compatible con motores de cifrado de código abierto como OpenSSL, GnuTLS y NSS para algoritmos simétricos y asimétricos.