Skip to main content
Version: 3.18 (latest)

Configure encryption and authentication to secure Calico Enterprise components

Connections from Calico Enterprise components to kube-apiserver (Kubernetes and OpenShift)​

We recommend enabling TLS on kube-apiserver, as well as the client certificate and JSON web token (JWT) authentication modules. This ensures that all of its communications with Calico Enterprise components occur over TLS. The Calico Enterprise components present either an X.509 certificate or a JWT to kube-apiserver so that kube-apiserver can verify their identities.

Connections from Node to Typha (Kubernetes)​

Operator based installations automatically configure mutual TLS authentication on connections from Felix to Typha. You may also configure this TLS by providing your own secrets.

Configure Node to Typha TLS based on your deployment​

For clusters installed using operator, see how to provide TLS certificates for Typha and Node.

For detailed reference information on TLS configuration parameters, refer to:

Calico Enterprise Manager connections

Tigera Calico Enterprise Manager's web interface, run from your browser, uses HTTPS to securely communicate with the Calico Enterprise Manager, which in turn, communicates with the Kubernetes and Calico Enterprise API servers also using HTTPS. Through the installation steps, secure communication between Calico Enterprise components should already be configured, but secure communication through your web browser of choice may not. To verify if this is properly configured, the web browser you are using should display Secure in the address bar.

Before we set up TLS certificates, it is important to understand the traffic that we are securing. By default, your web browser of choice communicates with Calico Enterprise Manager through a NodePort service over port 30003. The NodePort service passes through packets without modification. TLS traffic is terminated at the Calico Enterprise Manager. This means that the TLS certificates used to secure traffic between your web browser and the Calico Enterprise Manager do not need to be shared or related to any other TLS certificates that may be used elsewhere in your cluster or when configuring Calico Enterprise. The flow of traffic should look like the following:

Calico Enterprise Manager traffic diagram

note

the NodePort service in the above diagram can be replaced with other Kubernetes services. Configuration will vary if another service, such as a load balancer, is placed between the web browser and the Calico Enterprise Manager.

To properly configure TLS in the Calico Enterprise Manager, you will need certificates and keys signed by an appropriate Certificate Authority (CA). For more high level information on certificates, keys, and CAs, see this blog post.

note

It is important when generating your certificates to make sure that the Common Name or Subject Alternative Name specified in your certificates matches the host name/DNS entry/IP address that is used to access the Calico Enterprise Manager (i.e. what it says in the browser address bar).

Configuring Calico Enterprise Manager UI TLS​

Configure manager TLS based on how you've deployed Calico Enterprise

Operator deployment​

For clusters installed using the Tigera Operator, see how to configure manager TLS.

Manual/Helm deployment​

Once you have the proper server certificates, you will need to add them to the Calico Enterprise Manager. During installation of the Calico Enterprise Manager, you should have run the following command.

sudo kubectl create secret generic cnx-manager-tls --from-file=cert=/etc/kubernetes/pki/apiserver.crt \
--from-file=key=/etc/kubernetes/pki/apiserver.key -n kube-system
note

If you are using certificates not from a third party CA, you will need to also add your certificates to your web browser. See the Troubleshooting section for details.

The .crt and .key files should be the TLS certificate and key respectively that you are using for securing the traffic with TLS. If you need to replace the certificates that you specified during installation, rerunning this command while specifying the correct files will fix the issue. Once the certificates are updated, you will need to kill the Calico Enterprise Manager pod so that it is restarted to uptake the new certificates.

kubectl delete pod <cnx-manager-pod-name> -n kube-system

Issues with certificates​

If your web browser still does not display Secure in the address bar, the most common reasons and their fixes are listed below.

  • Untrusted Certificate Authority: Your browser may not display Secure because it does not know (and therefore trust) the certificate authority (CA) that issued the certificates that the Calico Enterprise Manager is using. This is generally caused by using self-signed certificates (either generated by Kubernetes or manually). If you have certificates signed by a recognized CA, we recommend that you use them with the Calico Enterprise Manager since the browser will automatically recognize them.

    If you opt to use self-signed certificates you can still configure your browser to trust the CA on a per-browser basis by importing the CA certificates into the browser. In Google Chrome, this can be achieved by selecting Settings, Advanced, Privacy and security, Manage certificates, Authorities, Import. This is not recommended since it requires the CA to be imported into every browser you access Calico Enterprise Manager from.

  • Mismatched Common Name or Subject Alternative Name: If you are still having issues securely accessing Calico Enterprise Manager with TLS, you may want to make sure that the Common Name or Subject Alternative Name specified in your certificates matches the host name/DNS entry/IP address that is used to access the Calico Enterprise Manager (i.e. what it says in the browser address bar). In Google Chrome you can check the Calico Enterprise Manager certificate with Developer Tools (Ctrl+Shift+I), Security. If you are issued certificates which do not match, you will need to reissue the certificates with the correct Common Name or Subject Alternative Name and reconfigure Calico Enterprise Manager following the steps above.

Ingress proxies and load balancers​

You may wish to configure proxy elements, including hardware or software load balancers, Kubernetes Ingress proxies etc., between user web browsers and the Calico Enterprise Manager. If you do so, configure your proxy such that Calico Enterprise Manager receives a HTTPS (TLS) connection, not unencrypted HTTP.

If you require TLS termination at any of these proxy elements, you will need to

  • use a proxy that supports transparent HTTP/2 proxying, for example, Envoy
  • re-originate a TLS connection from your proxy to Calico Enterprise Manager, as it expects TLS

If you do not require TLS termination, configure your proxy to "pass thru" the TLS to Calico Enterprise Manager.