Ошибка XMLSEC: не удалось загрузить сертификат

Я пытаюсь использовать набор инструментов 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 на машинах с красной шляпой, и я решил их, создав пакет, следуя тому, что описано в https://github.com/onelogin/python-saml/issues/30, что означает обновление /usr /bin/xmlsec1-config, чтобы он содержал "-DXMLSEC_NO_SIZE_T" в "--cflags".


person José Pedro Duarte    schedule 20.06.2018    source источник


Ответы (1)


Я решил это, загрузив сертификат из памяти, а не загружая его из файла. Тем не менее, я действительно не знаю, почему загрузка из файла не работает в CentOS 6.8 (или не работает у меня)

person José Pedro Duarte    schedule 08.08.2018