У меня есть скрипт python, который использовался для генерации сертификатов X509 с расширениями сертификатов с использованием модулей PyASN1 и pyasn1_modules
. Но теперь, когда я обновил эти модули до последних версий от pypi (ранее они были из репозиториев Ubuntu 14.04), сгенерированные сертификаты больше не действительны (в соответствии с командой openssl x509
, а также командой dumpasn1
, которая показывает изменения от ранее созданных сертификатов, значения больше не завертываются в контейнер OctetString
).Неверные файлы при создании сертификатов X509, содержащих расширения с более новыми версиями PyASN1
Это проблематично код:
from pyasn1.type import univ
from pyasn1.codec.der import encoder as der_encoder
from pyasn1_modules import rfc2459
extn = rfc2459.BasicConstraints()
extn.setComponentByName('cA', True)
extn.setComponentByName('pathLenConstraint', 5)
extn_val = der_encoder.encode(extn)
extension = rfc2459.Extension()
extension.setComponentByName('extnID', '2.5.29.19')
extension.setComponentByName('critical', True)
extension.setComponentByName('extnValue', extn_val)
Я попытался изменить последнюю строку следующим образом:
extension.setComponentByName('extnValue', univ.OctetString(extn_val))
Который поднимает эту ошибку из PyASN1:
Component value is tag-incompatible: OctetString(hexValue='30060101ff020105') vs Any()
Каковы изменения в последних версиях, которые могли вызвать это, и как я могу исправить свой код, чтобы сделать его совместимым с новым versio n этих двух модулей (и предпочтительно поддерживать совместимость с предыдущими версиями).
Новые версии: pyasn1 0.1.9 и 0.0.8 pyasn1_modules
версииUbuntu Репо: pyasn1 0.1.7 и 0.0.3 pyasn1_modules
Python версии 2.7