Certificate export, missing PTR list, simpler "Used for"
- Certificates can be exported for use outside Jarl: Export… on the
Certificates page (download or copy), jarl cert export, and
GET /certificates/{name}/pem?part=fullchain|cert|key|bundle.
Administrators only; key exports are audited.
- A reverse zone's missing-PTR banner lists the addresses and names
(ptr_missing_list in the zone API).
- "Used for" shows DoT/DoH for named, and "not used by Jarl" instead of
"nothing yet".
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
57012fece8
commit
b4bb99b482
16 files changed
+352
-12
No files matched your search
+26
-1
@@ -216,11 +216,35 @@ and the last good one stays in use. jarld runs as user `jarl`, which must
|
||||
be able to read both files (e.g. `chgrp jarl` and `chmod 640`, or have
|
||||
your renewal hook copy them somewhere it can read).
|
||||
|
||||
## Using a certificate outside Jarl
|
||||
|
||||
A certificate needn't be used by Jarl at all ("not used by Jarl" on the
|
||||
Certificates page): Jarl obtains and renews it, and you export it for
|
||||
another program, such as a mail server or a reverse proxy. **Export…** on
|
||||
the Certificates page downloads each file or copies it to the clipboard
|
||||
(copying needs the web UI over HTTPS, or from localhost). Or:
|
||||
|
||||
```sh
|
||||
jarl cert export mail --dir /etc/ssl/mail # fullchain.pem, and privkey.pem (mode 600)
|
||||
jarl cert export mail --part bundle > /etc/haproxy/mail.pem
|
||||
```
|
||||
|
||||
The parts are `fullchain` (the certificate and its chain), `cert` (the
|
||||
certificate alone), `key` and `bundle` (the key, then the chain, in one
|
||||
file, as HAProxy wants). Only administrators can export, and every export
|
||||
of the key is in the audit log (`certificate.export_key`).
|
||||
|
||||
Jarl renews the certificate, not your copy: export it again after each
|
||||
renewal (`jarl cert show` says when that is), for example from a daily
|
||||
cron job. A program on this server can instead read the files Jarl writes
|
||||
for named (use `dns`), which Jarl keeps current.
|
||||
|
||||
## Security notes
|
||||
|
||||
- Certificates Jarl obtains, their keys and the ACME account key are kept
|
||||
in Jarl's database, so they are in its backups (like TSIG secrets). The
|
||||
API never returns a key.
|
||||
API returns a key only to an administrator who exports it, and records
|
||||
that in the audit log.
|
||||
- Every publicly trusted certificate is published in Certificate
|
||||
Transparency logs, with all its names. A name like `ns1.adbraun.lol`
|
||||
used for both the web UI and DNS reveals less than separate names. Avoid
|
||||
@@ -240,6 +264,7 @@ your renewal hook copy them somewhere it can read).
|
||||
| GET, PATCH, DELETE | `/certificates/{name}` | `domains` and `uses` replace the whole list |
|
||||
| POST | `/certificates/{name}/issue` | obtain now: 202, then poll `GET /certificates/{name}` until `issuing_since` is gone; a file certificate is reread (200) |
|
||||
| POST | `/certificates/{name}/check` | the routes for an existing certificate |
|
||||
| GET | `/certificates/{name}/pem?part=fullchain` | the certificate as PEM, to save: `fullchain` (default), `cert`, `key` or `bundle` (key and chain). Exports of the key are audited |
|
||||
|
||||
## Testing with Pebble
|
||||
|
||||
|
||||
Reference in new issue
Block a user