Private key stays local
Generate a unique key in protected per-unit storage.
Implementation candidate · managed-site validation required
Factory enrollment prepares the credentials required for the first network attempt. The device must not need an Internet API call to obtain the very credentials that make that API reachable.
Generate a unique key in protected per-unit storage.
The trusted factory backend requests a certificate with enrollment authority.
Install its profile and reporting token; exclude the partner token.
Target supported hardware and an enabled site. Your application retains its own health and recovery responsibilities.
Use a product and batch to organize enrollment. Run enrollment from a trusted manufacturing system with a scoped, expiring service credential.
Install the kit as described in the quickstart and select a product UUID. Run these commands in a trusted per-unit provisioning environment. Only the public CSR leaves local key storage; protect the returned bundle and securely install it on the corresponding unit.
# Requires Python >=3.10, OpenSSL, and a protected per-device directory.
umask 077
hotspotvu-connect enroll \
--base-url "$HOTSPOTVU_API" \
--product-id "$HOTSPOTVU_PRODUCT_ID" \
--external-id SENSOR-0001 --name "Temperature sensor 1" \
--directory /etc/hotspotvu-connect
hotspotvu-connect configure --directory /etc/hotspotvu-connect
# Output from enroll: {"device_id":"<UUID>","credentials_installed":true}
# The private key stays local. Only the CSR is submitted for signing.
# The partner token belongs only in this factory environment.
# Exclude it from the shipped device image.Do not copy a private key across a fleet or store a manufacturer’s API token on production devices. A compromised device should be revocable without replacing every device in the batch.
Protect enrollment records and avoid embedding secrets in support logs, QR codes, or public serial-number lookups.
A manufacturing record does not grant a device permission at every customer site. The initial API supports explicit read-only provider delegation; customer ownership transfer is a separate capability outside this release.
A site operator allowing a connection grants network permission at that site. That action does not transfer the device’s ownership to the operator or the manufacturer.
The device can renew through /api/iot/v1/device/renew using an unexpired reporting token and proof of its associated certificate private key. The reference daemon begins renewal seven days before expiry; no manufacturer automation token is needed on the device.
A reporting token expires with its certificate. Older tokens and certificates remain valid across renewal until their own expiry or revocation, while the device is active and its account is not suspended. Install the returned bundle safely and keep the stable device identity.
Treat suspected key compromise as revocation and controlled replacement. Expired credentials need an authorized recovery process. Failed renewal must not disable certificate checks or bypass site permission.
Create a UUID-bound CSR. Retain the private key in protected storage.
Use scoped credentials and retain the stable registry identifier.
Sign the CSR and return the certificate, trust and reporting bundle.
Install certificate, CA, server identity checks and device reporting token.
Authenticate with the installed identity. Wait for business approval.