我们正在尝试为我们的Linux应用程序运行的每个功能提供许可机制,我们正在考虑使用许可证服务器以集中方式控制它:
我们的许可目标是:
是否有任何允许我们这样做的服务器许可证(基本上,我们会使用套接字与我们的应用程序通信)?我们还能做些什么(例如,使用一些开源软件,阅读等)来开始?
答案 0 :(得分:4)
如果您确实想要使用许可证服务器,请确保您的应用程序不必一直联系它以授权使用 - 当人们丢失Internet连接或服务器出现故障时,这将导致问题无法解决或崩溃。
我建议在本地下载和存储密钥,这样可以减少到服务器的往返次数。可以根据用户的计算机详细信息对密钥进行加密,以便无法共享密钥。
我们过去曾使用HASP硬件密钥,虽然他们确定无误地工作并提供解决方案,但我认为它们不是您想要的,因为它们只需编程一次即可。例如,您将无法更新HASP密钥以关闭试用期。
答案 1 :(得分:4)
你真的需要“打电话回家”吗?
我见过一个相对无痛的许可证系统,通过该系统向用户提供了一个描述许可证有效期的XML文件,一个可选的IP地址以及“未锁定”功能列表。使用供应商的私钥生成数字签名,该私钥重新插入到许可证文件中。在启动时,应用程序正在读取许可证,验证它,检查IP并相应地解锁功能。
供应商可以在需要时向客户提供更新的许可证。
虽然理论上可以通过更改机器的本地时间和用IP地址捏造来欺骗许可证,但在这种情况下,这会使应用程序使用起来非常麻烦,所以这不是问题。
答案 2 :(得分:2)
软件确实需要保护 - 请查看这些人here - 他们提供硬件和软件解决方案。
答案 3 :(得分:1)
这是一种Dilbert-esque做事方式。说不。
虽然很讨厌,但这是高端专业软件的标准功能,价格高达数万美元。想想3D扫描仪和CNC的东西。
答案 4 :(得分:1)
FLEXnet(以前称为FLEXlm)是一种许可软件包,通常由高端或专用软件包使用,例如在电子设计自动化市场中。您可以将许可证锁定到单个计算机(通过hostid,通常是以太网MAC地址)或便携式硬件加密狗,或者将网络服务器句柄锁定到运行软件的客户端共享有限的并发许可证池。许可证可以在有限时间内或永久授予,也可以受版本号限制。许可证文件描述了许可的功能。
FLEXnet包含几个用于与您的应用程序集成的API,包括一个用于C ++的API。我想它使用某种公钥密码术。通常,当您通过使用API时,使用FLEXnet的应用程序仅“通过电话回家”。许多应用程序在启动时检查许可证一次,或者在应用程序运行时间内从池中保留许可证。
当然,您需要支付年度许可费才能在产品中使用FLEXnet,起价超过1美元。费用因公司收入和您希望许可方案能够运行的平台数量(OS / CPU组合)而异。
如果您的产品每个座位售价低于数千美元,我会说使用像FLEXnet这样的东西是不值得的。使用(我们公司支持电话的大部分来源)是繁重的,但企业客户可能已经熟悉使用它,具体取决于市场。
FLEXnet,就像我听说的每个DRM计划一样,很容易被破解。至少我认为是,因为我们的产品的解锁版本经常在warez网站上找到。
答案 5 :(得分:0)
使用过使用此类许可证服务器的各种软件包后,我可以告诉您,这是让您的软件受到用户普遍讨厌的一种可靠方法。
答案 6 :(得分:0)
常见的许可软件是flexlm。但是如果我将这些限制强加给我的用户,我会三思而后行。许多用户不喜欢他们;特别是来自FOSS / Linux环境。
答案 7 :(得分:0)
如果您计划自己编写代码,我看到的一种常见机制是将许可证绑定到MAC address。