【发布时间】:2025-12-07 21:40:02
【问题描述】:
我们有一个需要客户端证书身份验证的 Rest API。该 API 由用户可以运行的 Python 脚本集合使用。为了使用户不必在每次运行其中一个脚本时输入其客户端证书的密码,我们在 java 中创建了这个代理进程,用户可以在后台启动并运行该进程,其中包含内存中的用户证书密码(我们只是在 JVM 中设置了 javax.net.ssl.keyStorePassword 属性)。脚本与该进程通信,该进程只是将 Rest API 调用转发到服务器(添加证书凭据)。
要在脚本和代理进程之间进行 IPC,我们只使用了一个套接字。问题是套接字会带来安全风险,因为有人可以通过其他人机器上的代理进程端口进行通信,从而使用其他人的证书来使用 Rest API。我们通过使用 java 安全性仅允许从 localhost 连接到端口,在一定程度上降低了风险。我认为尽管理论上有人仍然可以通过远程连接到机器然后使用端口来做到这一点。有没有办法进一步限制当前 Windows 用户使用端口?或者我可以使用另一种形式的 IPC 来使用当前的 windows 用户进行授权?
我们将 Java 用于代理流程,只是因为我们团队中的每个人都比 Python 更熟悉 Java,但如果有帮助的话,可以用 Python 重写它。
编辑:刚刚记得使用 java 进行代理进程的另一个原因是我们坚持使用 python v2.6,并且在这个版本中,似乎不支持带有客户端证书的 https (至少在不使用 3rd 方库的情况下并非如此)。
【问题讨论】:
标签: java python windows ipc ssl-certificate