fleet/ee/tools/license
Dante Catalfamo 437c8114b1
Allow certain licenses to disable telemetry (#29093)
#28220
---------

Co-authored-by: Scott Gress <scott@fleetdm.com>
2025-05-22 14:27:07 -04:00
..
license.js Allow certain licenses to disable telemetry (#29093) 2025-05-22 14:27:07 -04:00
package.json Bump jsonwebtoken from 8.5.1 to 9.0.0 in /ee/tools/license (#9109) 2023-02-27 18:23:18 -08:00
README.md DRIs (#17614) 2024-03-14 10:24:53 -05:00
yarn.lock Bump semver from 7.3.8 to 7.5.3 in /ee/tools/license (#12470) 2023-06-23 12:27:36 -07:00

Fleet license key generation

This directory contains the Node script for generating Fleet license keys.

Usage

Setup

Install the JS dependencies:

yarn

Put the private key and passphrase into files (avoid using shell commands to prevent secrets from leaking into shell history). They are in the "Licensing" Vault in 1Password. Speak to @lukeheath or @mikermcneil if you need to get access to these secrets.

nano key.pem
nano passphrase.txt

Generate a key

Run ./license.js generate to generate a key. For example:

./license.js generate --private-key key.pem --key-passphrase passphrase.txt --expiration 2022-01-01 --customer test --devices 100 --note 'for development only'
eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJGbGVldCBEZXZpY2UgTWFuYWdlbWVudCBJbmMuIiwiZXhwIjoxNjQwOTk1MjAwLCJzdWIiOiJkZXZlbG9wbWVudCIsImRldmljZXMiOjEwMCwibm90ZSI6ImZvciBkZXZlbG9wbWVudCBvbmx5IiwidGllciI6ImJhc2ljIiwiaWF0IjoxNjIyNDI2NTg2fQ.WmZ0kG4seW3IrNvULCHUPBSfFdqj38A_eiXdV_DFunMHechjHbkwtfkf1J6JQJoDyqn8raXpgbdhafDwv3rmDw

See ./license.js generate --help for more details on arguments.

Key format

License keys are JWTs signed with the ES256 method.

Check the contents of a key with https://jwt.io/.

The key generated above contains the following payload:

{
  "iss": "Fleet Device Management Inc.",
  "exp": 1640995200,
  "sub": "development",
  "devices": 100,
  "note": "for development only",
  "tier": "premium",
  "iat": 1622426586
}
  • devices refers to the number of licensed devices.
  • note includes any additional note about the terms of the license.
  • tier is the license Tier: currently premium = paid, free = free (though we do not plan to issue license keys for free)
  • Other claims use the meanings described in the JWT specification.