Для тех, кто нашел этот вопрос с помощью поиска в Google, аналогичного тому, что привел меня сюда.
Столкнувшись с подобной проблемой, и в поле зрения не было исправления этого недостатка M2Crypto, я пошел по пути вызова утилиты OpenSSL и парсинга вывода, который выглядит достаточно похожим на YAML, что мы можем немного подделать очистки.
def req_extensions(csrFilename):
cmd = ('openssl req -text -noout -in %s'
% csrFilename)
output = subprocess.check_output(cmd.split(),
stderr=subprocess.STDOUT)
output = re.sub(r': rsaEncryption', ':', output)
output = re.sub(r'[0-9a-f]{2}:', '', output)
return yaml.load(output)
Тогда ...
csrExt = self.req_extensions('my.csr')
keyUsage = (
csrExt['Certificate Request']['Data']['Requested Extensions']
['X509v3 Key Usage'])
SAN = (
csrExt['Certificate Request']['Data']['Requested Extensions']
['X509v3 Subject Alternative Name'])
и т.д.