プロジェクトで python-saml ツールキット (またはそのコードの一部) を使用しようとしていますが、この質問で対処しようとする問題がいくつかあります。私のローカルマシン(ubuntu 18.04)では、すべてを稼働させましたが、centOSマシンにインストールすると、いくつかの問題が発生しました。私が使用している (使用する必要がある) リリースは CentOS 6.8 です。必要なすべての rpm パッケージ (依存関係) をビルドしてインストールしました。python-saml コードの次の行に、「証明書の読み込みに失敗しました」というエラーが表示されます。
sign_key.loadCert(file_cert.name, xmlsec.KeyDataFormatCertPem)
この loadCert 関数は、dm.xmlsec.binding パッケージの一部です。だから私はこの機能をチェックしました、そしてこれはそれです:
def loadCert(self, char *filename, xmlSecKeyDataFormat key_data_format):
"""load certificate of *key_data_format* from *filename*."""
cdef int rv
with nogil:
rv = xmlSecCryptoAppKeyCertLoad(self.key, filename, key_data_format)
if rv < 0:
raise Error("failed to load certificate", filename, rv)
まあ、問題は「xmlSecCryptoAppKeyCertLoad」にのみあると思うので、XMLSEC ライブラリに属し、次のように定義されているこの関数を確認しました。
int xmlSecCryptoAppKeyCertLoad(xmlSecKeyPtr key, const char* filename, xmlSecKeyDataFormat format) {
if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->cryptoAppKeyCertLoad == NULL)) {
xmlSecNotImplementedError("cryptoAppKeyCertLoad");
return(-1);
}
return(xmlSecCryptoDLGetFunctions()->cryptoAppKeyCertLoad(key, filename, format));
}
関数「loadCert」の引数は正しく、正しい証明書ファイル名と正しい形式です。コマンドラインで手動で試してみたところ、同じエラーが発生しました(centOSマシンのみ、Ubuntuではすべて問題ありません)。
何が問題になる可能性がありますか?どういうわけか何が起こっているのかを理解する必要がありますが、誰かがそれを助けることができれば素晴らしいでしょう.
前もって感謝します!
質問には重要ではありませんが、念のため他の人に役立つ可能性があります.dm.xmlsec.bindingをRed Hatマシンにインストールする際に問題があり、https://github.com/で説明されている内容に従ってパッケージを構築することで解決しました. onelogin/python-saml/issues/30、これは /usr/bin/xmlsec1-config ファイルを更新して、「--cflags」に「-DXMLSEC_NO_SIZE_T」を含めることを意味します。