Перед использованием сертификата мне необходимо убедиться, что все сертификаты в цепочке объединены для создания цепочки доверия к доверенному корневому сертификату ЦС (чтобы обнаружить и избежать любых вредоносных запросы). Мне сложно сделать это на Python, и мои исследования по этому предмету не дали ничего полезного.
Сертификат легко захватывается и загружается с помощью запросов и M2Crypto р>
Код: Выделить всё
import requests
from M2Crypto import RSA, X509
mypem = requests.get('https://server.com/my_certificate.pem')
cert = X509.load_cert_string(str(mypem.text), X509.FORMAT_PEM)
В другой теме об этой проблеме (по адресу https://stackoverflow.com/a/4427081) аббат объясняет, что m2crypto не способен выполнить эту проверку, и говорит, что он написал расширение, позволяющее проверка (с использованием модуля m2ext), но его патч никогда не работает, всегда возвращает false, хотя я знаю, что он действителен:
Код: Выделить всё
from m2ext import SSL
ctx = SSL.Context()
ctx.load_verify_locations(capath='/etc/ssl/certs/') # I have run c_rehash in this directory to generate a list of cert files with signature based names
if not ctx.validate_certificate(cert): # always happens
print('Invalid certificate!')
Все ответы, касающиеся проверки цепочки доверия сертификатов в Python, похоже, либо ссылаются на мертвый патч, либо возвращаются к m2ext.
Есть ли простой и понятный способ Как проверить цепочку доверия моих сертификатов в Python?
Подробнее здесь: https://stackoverflow.com/questions/307 ... -in-python