XML Security Library (xmlsec) 庫編譯 (解決舊版本xmlsec.exe 0xc000007b報錯)

XML Security Library

XML Security Library是一個基於libxml2的C類庫,支持主流的XML加密算法,原生支持gcrypt, gnutls, mscng, mscrypto, nss, openssl六種加密庫,在諸如SAML2.0等加密認證或相關安全領域會用到該庫,截至發文(2019-10-18),libxmlsec類庫源碼最新版爲1.2.29(2019-10-15更新))。

XML Security Library 官網提供了源代碼及舊版預編譯二進制文件下載。
XML Security Library 官方下載站點提供的最新Windows版庫文件爲1.2.18,用於32位平臺,不支持64位平臺,因此在64位Windows使用該文件時會報0xc000007b加載錯誤

xmlsec1.2.29支持的加密算法:

xmlsec動態加載各加密庫時對不同加密算法的支持情況:

crypto 庫 xmlsec支持的xml加密算法
gcrypt Der
gnutls Pkcs12, Der, X509_APP_KEY
mscng Pkcs12, Der
mscrypto Pkcs12, Der
nss Pkcs12, Der,
openssl Pem, Der, Pkcs8Pem, Pkcs8Der, Pkcs12

xmlsec的解析庫中,openssl幾乎支持了大部分加密算法,針對常見的Pkcs12及Der加密可以任選其一使用,而其餘的如Pem的加密則必須使用openssl加密庫,這些加密方法接口的定義及調用在$PATH_TO_XMLSEC_SOURCE/src/$CRYPTO_LIB/app.c中。

編譯與使用

官方提供的二進制文件目前不支持新版特性,並且只能運行在32位系統中,如果需要在pySAML等庫中調用該庫,建議在目標機中從源代碼編譯。
編譯環境任選,編譯器任選,建議只選擇加密庫其中一種,避免程序過於臃腫。

此處挑選以Pem位加密算法加密XML場景的編譯過程,因爲只有openssl庫支持Pem加密方式,其餘庫參考此方法即可
平臺:Windows 10-64bit
編譯環境:Cygwin
Cygwin預裝庫:automake-1.15, cygwin32-libtool, libtool, libxml2-dev, libxslt, libxslt-devel, make, gcc-g++.
如果在Linux環境中編譯,只需要保證這些庫在就可以,其餘步驟一樣。
編譯準備:下載xmlsec1源代碼openssl源代碼,使用系統或Cygwin預裝的openssl會導致一些方法調用時顯示未定義。

解壓編譯opensll和xmlsec1源代碼,需要先編譯並安裝openssl庫再編譯xmlsec

tar xvf openssl-1.1.1d.tar.gz 
tar xvf xmlsec1-1.2.29.tar.gz
cd openssl-1.1.1d
./config
make
make install
cd xmlsec1-1.2.29
./configure --enable-mscrypto=no --enable-mscng=no 
# 禁用mscrypto和mscng庫以減小庫大小

make 
make install

最後在系統環境變量PATH中加入$PATH_TO_CYGWIN\lib$PATH_TO_CYGWIN\bin

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章