canonical / canonical/postgresql-operator
Charm does not handle certificates / CSRs without IP identifier support (ACME)
- Dominant language
- Python
- Stars
- 20
- Forks
- 36
- Avg merge
- 4d 15h
- Merged PRs (30d)
- 30
Description
## Steps to reproduce
```
juju deploy postgresql --channel=16/stable -n 1
juju deploy manual-tls-certificates --channel=1/stable -n 1
juju relate manual-tls-certificates postgresql:client-certificates
# Extract the CSR and inspect it
juju show-unit manual-tls-certificates/0 --endpoint certificates | yq -r '.["manual-tls-certificates/0"]."relation-info"[0]."related-units".[].data.certificate_signing_requests | fromjson[].certificate_signing_request' | openssl req -in - -noout -text
# You should see an IP address in the SANs
Attributes:
Requested Extensions:
X509v3 Subject Alternative Name:
DNS:postgresql-0, DNS:10.46.17.24, IP Address:10.46.17.24, DNS:dpsddev-postgresql-2.dev.esoc.esa.int
# Try to sign this CSR
./acme.sh --signcsr --csr /home/ubuntu/deploy.ggouzi/secrets/tls/csrs/ddev-postgresql/to-sign/0.csr -w /home/ubuntu/deploy.ggouzi/secrets/tls/csrs/ddev-postgresql/signed
....
[Mon Oct 27 01:34:33 PM UTC 2025] Signing from existing CSR.
[Mon Oct 27 01:34:34 PM UTC 2025] Error creating new order. Le_OrderFinalize not found. {"type":"urn:ietf:params:acme:error:unsupportedIdentifier","status":400,"detail":"IPv4 and IPv6 identifier types are not yet supported"}
```
## Expected behavior
Being able to sign CSRs using external CA not allowing IP-based certificates
## Actual behavior
Unable to sign CSRs (it also probably affects certificates as well)
## Versions
postgresql 16.10 channel 16/edge rev 950
OS: Noble 24.04
Juju agent: 3.6.11
## Additional context
> According to the ACME RFC 8738 (for IP identifier support), most CAs, including Sectigo, do not yet support > issuing certificates for raw IP addresses.
> "IPv4 and IPv6 identifier types are not yet supported"
Contributor guide
Assessment
This issue has not been assessed yet.