Skip to main content
Troubleshooting

Error codes

The licence gate's 403 codes, activation endpoint responses, reason values in status.json, and the verbatim install and Kerberos errors met in practice.

This page is for administrators looking up an IDMatrix error message. IDMatrix itself produces errors in three places: the licence gate, the activation endpoint and the managed-host plugin. Everything else is native FreeIPA or Kerberos; only the ones that matter in troubleshooting are listed.

Licence gate (JSON-RPC 403)

Every write from the console or the ipa CLI passes the gate. A refusal is HTTP 403 with a standard IPA error body:

{"error": {"code": 4301, "name": "LicenseModuleLocked", "message": "..."}, "result": null, "id": 0}
CodeMeaningRemedy
4300 LicenseReadOnlyLicence invalid (not activated, expired, fingerprint mismatch, revoked); all writes refusedRead reason in status.json; activate or reissue
4301 LicenseModuleLockedLicence valid, but the method named in message belongs to an unlicensed moduleCheck mods; upgrade the tier to use it

Only writes are refused: method names containing add, mod, del, remove, enable, disable, set, reset, stage, unstage, activate, deactivate, rename, import, revoke, retract, request, rebuild, run, approve, reject or restore. find and show always pass. If any sub-command in a batch is refused, the whole batch is.

FreeIPA's own service principals (host/, ldap/, HTTP/ and so on) bypass the gate. ipa-client-install runs as admin and passes through it, but host_add and host_mod belong to no module. Both rules apply from 1.0.2.

Refusals are not logged by httpd. grep LicenseModuleLocked /var/log/httpd/error_log is always 0.

Activation endpoint

POST https://<FQDN>/ipa/modern-ui/license/install, body is the raw .lic. It returns {"ok": true, "status": {...}} or {"ok": false, "reason": "..."}. On failure the current licence is left untouched.

CodeMeaningRemedy
许可证文件为空或过大 (file empty or too large)Empty body, or over 64 KBUsually a wrong path after curl --data-binary @, sending an empty file. Use an absolute path
许可证文件不是有效文本 (not valid text)Not UTF-8Send the raw .lic; do not transcode
Offline license is bound to a different hostFingerprint mismatchReissue after a machine change, reinstall or clone
RSA-PSS signature verification failedBad signatureFile altered, or not signed by Reallysec. The issuer resends
License has expiredExpiredRenew
Unsupported license_type. Please request an updated license.Licence format older than the productReissue
Other parse errorsCorrupt file, or not an offline .licDownload again; confirm the issuer sent an offline licence rather than an online token

status.json

/var/lib/idmatrix-license/status.json is written by the daily timer and by every activation. Key fields:

FieldMeaningRemedy
validtrue or false; the gate's read-only criterionWhen false, read reason
degradedtrue means the licence has a problemRead reason
reasonno license file at /var/lib/idmatrix-license/license.lic is the factory state; License has expired; Offline license is bound to a different host; revoked or offline-grace expired is revoked in online mode or past the grace period; IDMATRIX_LICENSE_TOKEN unset for online mode is SERVER set without TOKENActivate, renew, reissue or complete the environment variables, per the reason
modsLicensed module list; the gate's module criterion, and navigation hides by itNone
max_managed_hosts, current_hostsCap and current countNear the cap, remove hosts or reissue with a higher cap
expiry, days_leftExpiry date and days remaining; yellow banner under 30Renew before expiry
fingerprintThis host's fingerprint, used for issuanceNone
license_idStarts with LIC-; reference when contacting ReallysecNone

Managed host cap

ipa host-add beyond the cap:

ipa: ERROR: 已达授权受管主机数上限 (100 台)。如需新增主机,请联系您的授权服务商。

The message reads: managed host limit reached (100 hosts); contact your licence provider to add hosts.

The server plugin refuses it, not the gate, so it is a plain ExecutionError rather than a 403. ipa host-find --sizelimit=0 | tail -1 shows the current count. Deleting unused host objects frees capacity.

Install

Logs are in /var/log/ipaserver-install.log and /var/log/ipareplica-install.log.

MessageMeaningRemedy
Unable to resolve host name, hostname resolves to localhostIPA_HOSTNAME does not resolve, or resolves to 127.0.0.1 or ::1Fix DNS or /etc/hosts
DNS server <IP> ... not respondingIPA_FORWARDERS unreachablePoint at a reachable forwarder
DNS server <IP> does not support DNSSECUpstream does not sign; validation is disabled automaticallyNone; ignore
IPA server is already configured on this systemPrevious install not removedipa-server-install --uninstall -U
FileNotFoundError: /etc/httpd/conf.d/ssl.confmod_ssl missingdnf install mod_ssl
ipa-getkeytab ... Failed to add key to the keytab (exit 11)/var/lib/ipa/gssproxy/ does not exist; the system was cleaned by handrpm -Va --nofiledigest | grep ^missing, then dnf reinstall the owning packages
FileNotFoundError: /var/log/pki/pki-ca-spawn.*.log/var/log/pki does not exist; same causeAs above
certmonger request is in state 'CA_UNREACHABLE'During a replica install, the first server's licence lacked certificate issuance (before 1.0.2)Upgrade or reissue
Replica DNS records could not be added on master: Insufficient accessACI timing during install; the replica's own DNS stage adds the recordVerify the DNS records afterwards
Replication topology in suffix 'domain' is disconnectedTopology check on replica uninstallAdd --ignore-topology-disconnect

Kerberos and directory

MessageMeaningRemedy
Clock skew too great, KRB5KDC_ERR_SKEWMore than 5 minutes apartSync time
Cannot contact any KDC for realmClient cannot find a KDC: DNS SRV broken, or the KDC is downOn the client dig +short _kerberos._tcp.<domain> SRV; on the server ipactl status
Server not found in Kerberos databaseService principal does not exist; usually a hostname mismatchCompare the hostname with the service principal
Keytab contains no suitable keys for <principal>Wrong keytab, or it holds another host's principalRerun ipa-getkeytab on the target host
ldap_bind: Invalid credentials (49) with gss_accept_sec_context in the DS logThe server cannot decrypt the ticket: the new host lacks crypto-policies and its KDC signed with camelliaSee Adding a second server
ldap_bind: Server is unwilling to perform (53) Unauthenticated binds are not allowedEmpty-password bind refused; correct behaviourNone
Error (4) ... Unable to parse the response to the startReplication extended operationReplication protocol decode failure, usually with a zombie RUVcleanallruv
Didn't connect to LDAP on startup: 110, while fetching master key K/MThe KDC started before the directoryipactl restart
WERR_CONNECTION_REFUSEDtrust-add with a two-way trustUse one-way; drop --two-way

On this page