我想创建一个满足我要求的自定义 OpenVpn For Android 客户端。在典型模式下,客户端有一个配置文件(.ovpn 文件),用于连接到 OpenVpn 服务器。身份验证过程可以是用户名/密码或基于证书的。但是我希望在客户端(移动)而不是在服务器端完成密钥生成过程,并且私钥保持完全私有并且服务器无法访问它。
我的意思是更改 android 客户端的 openvpn 代码以在移动设备的 TEE(可信执行环境)中生成密钥对,然后创建 CSR(证书签名请求),然后将 CSR 文件发送到 Openvpn 服务器和服务器签署 CSR 文件并创建 CRT(证书文件) 并发送回客户。客户端将 CRT 文件存储在 TEE 中,并在下次使用私钥/证书与 OpenVpn 服务器通信。
这种情况可能吗?有人对实现此功能有任何想法吗?