Полное объяснение того, что я хочу сделать и почему потребуется время, чтобы объяснить.По сути, я хочу использовать частное соединение SSL в общедоступном приложении, а не раздавать свои личные ключи ssl, потому что это сводит на нет цель!Т.е. мне нужны безопасные удаленные операции с базой данных, которые никто не может увидеть, включая клиента.
Мой основной вопрос: как я могу заставить модуль Python ssl использовать данные, хранящиеся в памяти, содержащие содержимое файла ssl pem?жестких путей к файловой системе?
Конструктор для вызовов класса SSLSocket load_verify_locations(ca_certs)
и load_cert_chain(certfile, keyfile)
, которые я не могу отследить, потому что это файлы .pyd.Я полагаю, что в этих черных ящиках эти файлы читаются в память.Как я могу замкнуть процесс и передать данные напрямую?(возможно, поменять .pyd? ...)
Другие мысли, которые у меня были: я мог бы использовать io.StringIO
для создания виртуального файла, а затем передать дескриптор файла.Я использовал эту концепцию с классами, которые будут использовать дескриптор, а не путь.К сожалению, эти классы не разработаны таким образом.
Или, может быть, использовать виртуальную файловую систему / RAM-диск?Это может быть проблемой, потому что мне нужно, чтобы это было кроссплатформенным.Кроме того, это могло бы свести на нет то, что я пытаюсь сделать, если бы кто-то мог получить доступ к этим путям из любой внешней программы ...
Полагаю, я мог бы сохранить их как настоящие файлы, но "спрятать их где-нибудь в файловой системе.
Я не могу быть первым, у кого возникла эта проблема.
ОБНОВЛЕНИЕ
Я нашел источник для "черных ящиков" ...
https://github.com/python/cpython/blob/master/Modules/_ssl.c
Они работают какожидается.Они просто читают содержимое файла по путям, но вам нужно копаться в слое C, чтобы добраться до этого.
Я могу написать на C, но я никогда не пытался перекомпилировать исходный код Python.Похоже, мне следует следовать указаниям https://devguide.python.org/, чтобы получить репозиторий Python и внести изменения в.Думаю, я смогу затем представить свое обновление сообществу Python, чтобы узнать, не хотят ли они создать новую стандартизированную функцию, как я описываю ... Кажется, впереди много работы ...