2016-09-14 59 views
0

我正在开发使用Java实现的需要许可证才能运行的新产品。许可证验证基于服务器ID。如果我直接在Linux服务器上运行它,这不是问题。码头工人。使用基于主机ID的许可证运行软件

但是,我想提供在docker中运行我的软件的选项,但问题是我不知道如何从docker容器获取主机ID。我不想使用码头容器ID,因为客户可能需要重新创建它(例如,对于软件更新),所以我需要知道主机服务器的ID。

我想过使用MAC地址,但它需要使用“--net = host”选项运行容器,并且出于安全原因,我希望避免使用该选项。

+0

你是什么意思的“服务器ID”?你的java程序如何确定它运行的主机是“有效的”? – GhostCat

+0

谢谢@GhostCat。对于“服务器ID”,我的意思是确认主机服务器是“唯一”的东西,例如,Mac地址或检查许多服务器中没有使用相同许可证的东西。我希望该许可证适用于单个服务器。 – mrt

回答

2

也许你应该退一步,这个系统与组件协同工作,寻找替代方法,例如:

  1. 你的用户有某种ID +私钥可以存储在本地文件系统
  2. 您的应用程序从磁盘读取该文件;然后联系你的“家庭服务器”来验证这个ID +密钥实际上是否是“好的”,如果是的话,你的应用程序启动;否则它会停止

这样的解决方案甚至会允许用户将许可证文件包含到他们的泊坞窗图像中。

并记录:任何其他解决方案不会让您的应用程序与中央服务器通话可能会让您感到头疼。

+0

谢谢@GhostCat!我一直在想。最后我找到了一个可能的好选择。我想我将创建一个带有API的容器,该API只生成主机ID,并以--net = host选项启动。所以它将能够生成“唯一”的主机ID。因此,从主容器中,我将调用此API来获取主机ID,并检查安装的许可证是否对其有效。你怎么看? – mrt