在 Web 部署中将私钥保存在哪里?

Where to keep private keys in web deployments?

我正在编写一个 Web 应用程序,它通过 Web 交换签名 xml。我的问题是在哪里安全地存储我的私钥以及如何在我的 Java 代码中访问它们?我正在 Google App Engine 云上部署,我的应用程序可以根据服务器负载自动缩放。

执行此操作的行业最佳做法是什么?

从谁那里得到保护?国家安全局? Google 管理员?脚本小子?

理想情况下,您购买 HSM 并将它们存储在那里。我不知道 GAE 是否有 HSM。 AWS 可以,但并不便宜。

您还可以创建一个非常有限且锁定的简单服务器 API 并将您的密钥存储在其中并让该服务器为您签名,而不会泄露您的密钥。

您的下一个最佳选择是将您的密钥存储在一个文件或 envar 中,该文件或 envar 只能由您的应用 运行 的用户读取。