Hi,
I'm using Controller v1.7.2 and the Ziti Desktop Client for macOS v2.52.
I'm trying to connect my identity using the "with URL" feature and SSO, but unfortunately, the attempt fails with the following error: ‘TLS Handshake Failed: Remote Error “tls: bad certificate”.‘
SSO appears to be functional: I can access ZAC, and the ziti ops verify command returns a login success.
To address the certificate issue, I created an Amazon-issued certificate from a trusted authority and placed it in the alt_server_certs section under web. However, when accessing ZAC in the browser, it still presents the default self-signed certificate (NetFoundry’s). If I make the Amazon certificate primary and the self-signed one alternate, the browser correctly displays the Amazon certificate, but then the routers begin to return errors and are unable to connect to the controller (mismatch with /.well-known signingCert CA store)
I’ve seen in forum discussions that using alt_server_certs is generally recommended. However, after reading the documentation in depth and discussing with GPT, wouldn’t it be better to separate the API bindings (and their associated certificates)? For example:
edge:
api:
address: edge.my-domain.come:443 # must match a web.bindPoints.address
enrollment:
signingCert:
cert: pki/intermediate/certs/intermediate.cert
key: pki/intermediate/keys/intermediate.key
web:
# Public ZAC (Admin UI) on a different name (Amazon cert)
- name: management-public.
bindPoints:
- interface: 0.0.0.0:443
address: ctrl.my-domain.com:443 # public FQDN for management
identity:
server_cert: "/ziti-cert/fullchain.pem"
key: "/ziti-cert/privkey.pem"
apis:
- binding: edge-management # based on Important note on listener on the documentation.
options: {}
- binding: zac
options: { location: /ziti-console, indexFile: index.html }
- binding: fabric
options: {}
# Public Edge API for tunnelers/SDKs (Amazon cert)
- name: edge-public
bindPoints:
- interface: 0.0.0.0:443
address: edge.my-domain.com:443 # public FQDN for clients
identity:
server_cert: "/ziti-cert/edge_fullchain.pem" # Amazon/public
key: "/ziti-cert/edge_privkey.pem"
apis:
- binding: edge-client
options: {}
- binding: edge-oidc
options: {}
# Internal Edge API using Ziti PKI
- name: edge-internal
bindPoints:
- interface: 0.0.0.0:8441
address: ziti-controller:8441
identity:
ca: "pki/root/certs/root.cert"
server_cert: "pki/intermediate/certs/server.chain.pem"
key: "pki/intermediate/keys/server.key"
cert: "pki/intermediate/certs/client.chain.pem"
apis:
- binding: edge-client
options: {}
I think it provides a better flexability.
My questions are:
-
Where can I find more information about available
apis, and theiroptionssettings? -
Is it possible to bind the same API (e.g.,
edge-client) to multiple listeners? -
Can I place the management-client, ZAC and fabric APIs in a private network to reduce the attack surface? Are they required to be accessible to routers, SDKs, clients, etc.?
-
What is the purpose of the
identitysection at the top level of the configuration file? Is it just the default TLS identity unless overridden by another section (such as inweb)?
Thanks in advance for your help.
Thanks.