Я работаю над сервисом, который будет обрабатывать голосовые намерения Alexa. Мне нужно проверять подпись каждого запроса, и мне это почти удается. Единственная часть, которая не работает, — это проверка цепочки сертификатов.
Из документация Я знаю, что:
Эта цепочка сертификатов по порядку состоит из (1) сертификата подписи Amazon и (2) одного или нескольких дополнительных сертификатов, которые создают цепочку доверия к сертификату корневого центра сертификации (ЦС).
Мой код выглядит так:
certificates = pem.parse_file("chain.pem")
store = crypto.X509Store()
for cert in certificates[:-1]:
loaded_cert = crypto.load_certificate(crypto.FILETYPE_PEM,
cert.as_bytes())
store.add_cert(loaded_cert)
intermediate_cert = crypto.load_certificate(
crypto.FILETYPE_PEM,
certificates[-1].as_bytes()
)
# Create a certificate context
store_ctx = crypto.X509StoreContext(store, intermediate_cert)
# Verify the certificate
store_ctx.verify_certificate()
Я получаю следующую ошибку:
OpenSSL.crypto.X509StoreContextError: [20, 0, 'unable to get local issuer certificate']
Я не знаю, что я сделал не так, может быть, есть кто-то, кто уже реализовал это и может подсказать.
pyopenssl==17.0.0
, аopenssl version
возвращаетOpenSSL 0.9.8zh 14 Jan 2016
- person Vitalie Maldur   schedule 26.05.2017