我正试图在我的项目中使用python工具包(或其中的一部分),但在这个问题上我会尝试解决一些问题。在我的本地机器(ubuntu18.04)中,我启动并运行了所有的东西,但是当涉及到在centOS机器上安装它时,我遇到了几个问题。我使用的版本(必须使用)是CentOS 6.8。我构建了我需要的所有rpm包(依赖项)并安装了它们。在python代码的下面一行中,我得到了stuc的错误,“未能加载证书”:
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时遇到了问题,我按照https://github.com/onelogin/python-saml/issues/30中描述的内容构建了包,这意味着更新/usr/bin/xmlsec1-config文件以包含“-c173”中的"-DXMLSEC_NO_SIZE_T“。
发布于 2018-08-08 09:17:42
我通过从内存加载证书来解决这个问题,而不是从文件中加载它。尽管如此,我还是不知道为什么centOS 6.8中文件加载不起作用(或者对我不起作用)。
https://stackoverflow.com/questions/50951967
复制相似问题