Я имею в виду изменение кода openvpn для клиента Android для генерации пары ключей в TEE (доверенной среде выполнения) мобильного телефона
Это легко сделать в TEE.Предполагая, что вы используете OPTEE-OS, например, вы можете использовать API глобальной платформы для генерации пары ключей из вашего доверенного приложения.Если вы используете другую TEE-OS, это, конечно, будет возможно при условии, что они предлагают функциональность.
, а затем создаете CSR (запрос на подпись сертификата)
В зависимости отподдержка, предлагаемая TEE, также возможна.OPTEE-OS поддерживает сертификаты X509 с использованием mbedTLS.
Или ваше клиентское приложение может попросить доверенное приложение получить открытый ключ в формате PEM и вызвать openssl, mbedTLS или любую другую библиотеку для создания CSR.
, а затем отправка файла CSR на сервер Openvpn, и сервер подписывает файл CSR и создает CRT (файл сертификата) и отправляет обратно клиенту.Клиент сохраняет файл CRT в TEE и в следующий раз связывается с сервером OpenVpn, используя закрытый ключ / сертификат.
Ваше клиентское приложение должно будет отправить запрос сертификата и внедрить подписанный сертификат в доверенное приложение, котороезатем придется проверить, совпадают ли закрытый ключ и открытый ключ сертификата.
Это возможный сценарий, однако OpenVpn потребуется способ проверки клиента, и, следовательно, он должен будет вызватьфункция verify / certify, которая будет использовать сохраненный сертификат и закрытый ключ в TEE.