fleet/ee/tools/license/README.md
Tomas Touceda 6d2ae02efd
Rename core->free and basic->premium (#1870)
* Rename core->free and basic->premium

* Fix lint js

* Comment out portion of test that seems to timeout

* Rename tier  to premium if basic is still loaded
2021-09-03 13:05:23 -03:00

57 lines
1.8 KiB
Markdown

# Fleet license key generation
This directory contains the Node script for generating Fleet license keys.
## Usage
### Setup
Install the JS dependencies:
```sh
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 @zwass or @mikermcneil if you need to get access to these secrets.
```sh
nano key.pem
nano passphrase.txt
```
### Generate a key
Run `./license.js generate` to generate a key. For example:
```sh
./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/](https://jwt.io/).
The key generated above contains the following payload:
```json
{
"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](https://datatracker.ietf.org/doc/html/rfc7519#section-4.1).