mTLS (1.25): Community or Enterprise feature, and how to revoke a client certificate? #3963
Replies: 2 comments
|
I can't speak for the CE/EE intent, that needs a maintainer, but on revocation I can say what the code does today. You don't need to replace your CA and reissue every device to get per-device revocation, though. Go treats every certificate in the client CA pool as a trust anchor and doesn't require it to be a self-signed root, and openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:P-256 -nodes \
-keyout phone-ca.key -out phone-ca.csr -subj "/CN=HA phone CA"
openssl x509 -req -in phone-ca.csr -CA root.crt -CAkey root.key -CAcreateserial -days 825 \
-out phone-ca.crt \
-extfile <(printf "basicConstraints=critical,CA:true,pathlen:0\nkeyUsage=critical,keyCertSign,cRLSign")
# then sign the phone's client cert (extendedKeyUsage=clientAuth) with phone-ca.crt / phone-ca.keyLosing the phone then means deleting Two things to keep in mind:
For proper revocation, your Badger idea fits data Pangolin already forwards: the |
|
#3961 is a bug and is going to be fixed. The routes are not in the
private directory on the main branch if you check ;}
Remove certs so they are no longer included. You can have more than
one cert. We can consider improving how you revoke certs in the
future.
|
Uh oh!
There was an error while loading. Please reload this page.
Thanks for shipping mTLS for public resources in 1.25 — it's been a long-awaited one (#46). I'm planning to use it in front of Home Assistant for the companion app, and two things aren't clear from the docs or the release post:
1. Is mTLS a Community or Enterprise feature?
The docs and release notes don't say it's Enterprise-only, but:
server/private/routers/resource/(createResourceMtlsCertificate.ts,deleteResourceMtlsCertificate.ts,listResourceMtlsCertificates.ts).disable_enterprise_featureson CE hides the mTLS option in the UI, while already-configured mTLS keeps working.So which one is intended? Is mTLS part of CE, and #3961 a bug? Or is it an Enterprise feature that's free under the EE license terms, in which case the docs could say so?
2. How should a client certificate be revoked?
Pangolin trusts whole CAs, up to 20 per resource. I couldn't find any way to stop trusting a single client certificate signed by a trusted CA:
server/lib/mtlsCertificate.tsonly parses and stores CA certificates. I found nothing CRL-related in the code.clientAuth(caFiles/clientAuthType) has no CRL support either, so I assume this can't just be passed through.As it stands, a lost or compromised device means creating a new CA, replacing it on every resource and reissuing every other client's certificate. Could you clarify:
X-Forwarded-Tls-Client-Cert-Info?If revocation is wanted, I'm happy to open a separate feature request.
All reactions