This commit is contained in:
jessikitty committed 2026-09-30 12:48:16 +10:00
1 parent 06b4616356
commit 215c38849b
5 files changed
+167 -8

No files matched your search

@@ -200,3 +200,25 @@ leave a stale lockout.
**Files:** `src/routes/admin.js` (PATCH handler), `public/js/admin.js` (edit modal shows the
current PIN, relabelled field, shows the card after a change), `public/css/admin.css`, `README.md`.
---
## Addendum — iPad trust troubleshooting
Reported: Safari and Chrome on a Jamf-managed iPad still report an insecure connection after the
certificate was imported into Jamf.
**Found:** the server certificate was being issued for *exactly* 398 days — Apple's ceiling, with
zero margin for rounding or clock skew. `SERVER_DAYS` in `src/tls.js` reduced 398 → 396.
**Added:** `scripts/tls-check.mjs` (`npm run tls-check`), which connects to a given URL and checks
what iOS requires: address covered by a SAN, validity span, SAN present, `serverAuth` EKU,
signature algorithm, key size, and that the served leaf was issued by this server's CA. It prints
the authority and leaf fingerprints side by side.
Note: Node's `X509Certificate` does not expose extended key usage and `toString()` returns PEM,
so the EKU and signature checks shell out to `openssl x509 -noout -text`.
**Most likely causes, still unconfirmed on the device:** the *served* certificate was uploaded to
Jamf instead of the *authority*; or the address the iPad uses is not in `HTTPS_HOSTNAMES` (the
host `.env` was previously missing that line entirely).