8

我们正在尝试为我们的 Linux 应用程序正在运行的每个功能提供许可机制,并且我们正在考虑使用许可服务器以集中方式控制它:

我们的许可目标是:

  1. 拒绝运营商未购买的功能。
  2. 提供试用(如果未购买,功能将过期)。
  3. 在一段时间内激活功能,并使其仅在一段时间内可用。

是否有任何服务器许可证允许我们这样做(基本上,我们将使用套接字与我们的应用程序通信)?我们还能做些什么(例如,使用一些开源软件、阅读等)来入门?

4

8 回答 8

4

如果您真的想使用许可证服务器,请确保您的应用程序不必一直联系它来授权使用 - 当人们失去 Internet 连接或您的服务器出现故障或崩溃时,这将导致无穷无尽的问题。

我建议在本地下载和存储密钥,从而减少到服务器的往返次数。可以根据用户的机器详细信息对密钥进行加密,从而使密钥无法共享。

我们过去使用过HASP硬件密钥,虽然它们确实可以工作并提供解决方案,但我认为它们不是您想要的,因为它们被编程一次,仅此而已。例如,您将无法更新 HASP 密钥以结束试用期。

于 2009-03-12T10:53:57.337 回答
4

你真的需要“打电话回家”吗?

我见过一个相对轻松的许可证系统,通过它向用户提供了一个 XML 文件,该文件描述了许可证的有效期、一个可选的 IP 地址以及“解锁”功能的列表。使用供应商的私钥生成了一个数字签名,该私钥被重新插入到许可证文件中。启动时,应用程序正在读取许可证、验证许可证、检查 IP 并相应地解锁功能。

供应商可以在需要时向客户提供更新的许可证。

虽然理论上你可以通过更改机器的本地时间和伪造 IP 地址来欺骗许可证,但在这种情况下,这会使应用程序使用起来非常麻烦,所以这不是问题。

于 2009-03-12T23:18:50.467 回答
2

有时软件确实需要保护——在这里查看这些人——他们提供硬件和软件解决方案。

于 2009-03-12T12:50:33.937 回答
1

FLEXnet(以前称为 FLEXlm)是一种许可包,通常由高端或专用软件包使用,例如在电子设计自动化市场中。您可以将许可证锁定到单台机器(通过 hostid,通常是以太网 MAC 地址)或便携式硬件加密狗,或者让网络服务器处理与运行您的软件的客户端共享有限的并发许可证池。许可证可以在有限的时间内或永久地授予,也可以受版本号的限制。许可证文件描述了许可的功能。

FLEXnet 包含多个用于与您的应用程序集成的 API,其中一个用于 C++。我想它使用某种公钥密码术。通常,使用 FLEXnet 的应用程序仅在您通过使用 API 要求它时“打电话回家”。许多应用程序在启动时检查一次许可证,或者在应用程序运行期间从池中保留许可证。

当然,您需要支付年度许可费才能在您的产品中使用 FLEXnet,起价超过 1000 美元。费用因贵公司的收入以及您希望许可方案能够运行的平台数量(操作系统/CPU 组合)而异。

如果您的产品每个座位的售价低于几千美元,我会说使用 FLEXnet 之类的东西是不值得的。使用起来很麻烦(我们公司的很大一部分支持电话的来源),但企业客户可能已经熟悉使用它,具体取决于市场。

FLEXnet,就像我听说过的所有 DRM 方案一样,很容易被破解。至少我认为是这样,因为我们的产品的解锁版本经常在warez网站上找到。

于 2009-04-07T12:29:23.237 回答
1

这是一种呆伯特式的做事方式。拒绝吧。

虽然讨厌,但这是高端专业软件的标准功能,需要花费数万美元。想想 3D 扫描仪和CNC的东西。

于 2009-03-12T10:46:03.270 回答
1

如果您确实打算自己编写代码,我见过的一种常见机制是将许可证绑定到MAC 地址

于 2009-04-07T12:05:50.563 回答
0

一种常见的许可软件是flexlm。但是,如果我将这些限制强加给我的用户,我会三思而后行。许多用户不喜欢它们;特别是来自 FOSS/Linux 环境。

于 2009-04-07T03:46:01.777 回答
0

使用过各种使用此类许可证服务器的软件包后,我可以告诉您,这是让您的软件受到用户普遍憎恨的一种可靠方法。

于 2009-03-12T10:25:36.483 回答