Я знаю, что могу сгенерировать статический ключ OpenVPN с помощью openvpn --genkey --secret myfile.key. В Python я сейчас использую вызов оболочки для генерации ключа, открываю myfile.key и считываю его обратно. Было бы намного чище, если бы я мог делать это без вызова оболочки.
Кто-нибудь знает, какой тип ключа генерируется с помощью команды --genkey или способ сгенерировать ключ непосредственно в Python?
К сожалению, OpenVPN в настоящее время не предоставляет API-интерфейсы Python. Однако один из способов (немного) очистить ваш скрипт - заставить его сгенерировать ключ непосредственно для stdout
, а затем используйте stdout
вернулся Popen
.
openvpn --genkey --secret /dev/stdout
Т.е.,
from subprocess import Popen, PIPE
proc = Popen("openvpn --genkey --secret /dev/stdout", shell=True, stdout=PIPE)
(stdout, stderr) = proc.communicate()
Насколько мне известно, даже несмотря на то, что ключи генерируются с использованием функции TLS PRF, нет «другого» способа сгенерировать ключи.