From 05c252d9a661022a8cef1138358588280c55fc10 Mon Sep 17 00:00:00 2001 From: Paul Wright Date: Mon, 14 Oct 2024 18:31:53 +0100 Subject: [PATCH 01/12] draft of tls concepts --- kubernetes/con-tls.adoc | 105 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 kubernetes/con-tls.adoc diff --git a/kubernetes/con-tls.adoc b/kubernetes/con-tls.adoc new file mode 100644 index 0000000..b787402 --- /dev/null +++ b/kubernetes/con-tls.adoc @@ -0,0 +1,105 @@ +include::../partials/attributes.adoc[] +// Type: concept +[id="understanding-tls"] += Understanding TLS certificates for Kubernetes sites + +By default, the traffic between sites is encrypted using mutual TLS providing secure communication between Kubernetes clusters. +The traffic between internal components is also encrypted using mutual TLS. +Optionally, the communication between an application and the {skupper-name} router can be encrypted using TLS. + +This section describes the Kubernetes secrets involved and when the certificates can be replaced with user-provided certificates. + +== Overview + +By default, {skupper-name} creates Certificate Authority certificates to support TLS for the following: + +(1)Within a site:: traffic flowing between the router and the service controller (and optionally the flow collector). + +(2)Between sites:: traffic flowing between a router in one site and a router in another site. + +(3)Between an application and a router:: traffic flowing between an application and a router. + +When running in Kubernetes, {skupper-name} expects specific Secrets to exist in each namespace where it is installed. +These Secrets, which contain TLS keys and certificates for each of the scenarios above, are located in predefined locations. + +When you create a site using the CLI or create a site declaratively using YAML, {skupper-name} creates the required Secrets if they do not already exist. +That gives you the ability to use your certificates to populate the Secrets before the site is created. + +== (1) Mutual TLS with a site + +Within a Skupper site, both the skupper-service-controller and the skupper-flow-collector (optional, but required for the console) need to connect to the skupper router. +These connections are secured using mutual TLS, and the required keys and certificates are stored in specific Secrets, all sharing the prefix skupper-local-: + +skupper-local-client:: Contains the key, and the certificate used by the skupper-service-controller and the skupper-flow-collector. +skupper-local-server:: Contains the key, and the certificate used by the skupper router. + +If these Secrets do not exist, Skupper creates them using a certificate authority (CA) to sign the certificates. + +For this purpose, Skupper generates another secret: + +skupper-local-ca:: Contains a key and a self-signed certificate. + +NOTE: Skupper will only use this secret if skupper-local-server and skupper-local-client are not populated. + +If skupper-local-client and skupper-local-server Secrets are provided by the user, there is no requirement for the skupper-local-ca Secret. + +== (2) Mutual TLS between sites + +== (3) TLS between a router and applications + +== Summary of TLS related secrets + +[cols=5*] +|=== + +| Scenario | Secret Name | Components | Category | Notes + +| (1) Mutual TLS within a site +| skupper-local-ca +| core +| Certificate authority for signing skupper-local-client and skupper-local-server secrets. +| Created by default. Not used if user provides other secrets. + +| +| skupper-local-client +| skupper-service-controller, skupper-flow-collector +| Secures connections to the skupper-router using mutual TLS. +| The flow collector is an optional component, required for console. + +| +| skupper-local-server +| skupper-router +| Secures incoming connections from skupper-service-controller and skupper-flow-collector. +| The flow collector is an optional component, required for console + + +| (2) Mutual TLS between Skupper Sites +| skupper-site-ca +| core +| CA for signing certificates in skupper-site-server and client certificates for links. +| Created by default. Not used if user provides other secrets. + +| +| skupper-site-server +| skupper-router +| Secures incoming connections from other Skupper sites. | Contains key, certificate, and CA certificate. + +| +| +| skupper-router +| Used by the initiating site's router to establish a link with another Skupper site. +| Labeled with `skupper.io/type=connection-token` + +| (3) TLS between Skupper Router and Applications | skupper-service-ca +| Skupper router, external services +| Manages CA certificates for TLS termination and connections. +| Created by default. Not used if user provides other secrets. +| + +| +| skupper-service-client +| Skupper router, external services +| Secures TLS termination at the router and TLS connections to services. +| Users can provide their own secrets via \--tls-cert and annotations. + +|=== From 8fc2605bfeb71efde518f95f0aff6f49262778fd Mon Sep 17 00:00:00 2001 From: Paul Wright Date: Mon, 14 Oct 2024 18:37:41 +0100 Subject: [PATCH 02/12] update --- kubernetes/con-tls.adoc | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/kubernetes/con-tls.adoc b/kubernetes/con-tls.adoc index b787402..3b572a0 100644 --- a/kubernetes/con-tls.adoc +++ b/kubernetes/con-tls.adoc @@ -27,24 +27,26 @@ That gives you the ability to use your certificates to populate the Secrets befo == (1) Mutual TLS with a site -Within a Skupper site, both the skupper-service-controller and the skupper-flow-collector (optional, but required for the console) need to connect to the skupper router. -These connections are secured using mutual TLS, and the required keys and certificates are stored in specific Secrets, all sharing the prefix skupper-local-: +Within a {skupper-name} site, both the skupper-service-controller and the skupper-flow-collector (optional, but required for the console) need to connect to the skupper router. +These connections are secured using mutual TLS, and the required keys and certificates are stored in specific Secrets, all sharing the prefix *skupper-local-*: skupper-local-client:: Contains the key, and the certificate used by the skupper-service-controller and the skupper-flow-collector. skupper-local-server:: Contains the key, and the certificate used by the skupper router. -If these Secrets do not exist, Skupper creates them using a certificate authority (CA) to sign the certificates. +If these Secrets do not exist, {skupper-name} creates them using a certificate authority (CA) to sign the certificates. -For this purpose, Skupper generates another secret: +For this purpose, {skupper-name} generates another secret: skupper-local-ca:: Contains a key and a self-signed certificate. -NOTE: Skupper will only use this secret if skupper-local-server and skupper-local-client are not populated. +NOTE: {skupper-name} will only use this secret if skupper-local-server and skupper-local-client are not populated. If skupper-local-client and skupper-local-server Secrets are provided by the user, there is no requirement for the skupper-local-ca Secret. == (2) Mutual TLS between sites + + == (3) TLS between a router and applications == Summary of TLS related secrets @@ -73,7 +75,7 @@ If skupper-local-client and skupper-local-server Secrets are provided by the use | The flow collector is an optional component, required for console -| (2) Mutual TLS between Skupper Sites +| (2) Mutual TLS between {skupper-name} Sites | skupper-site-ca | core | CA for signing certificates in skupper-site-server and client certificates for links. @@ -82,23 +84,23 @@ If skupper-local-client and skupper-local-server Secrets are provided by the use | | skupper-site-server | skupper-router -| Secures incoming connections from other Skupper sites. | Contains key, certificate, and CA certificate. +| Secures incoming connections from other {skupper-name} sites. | Contains key, certificate, and CA certificate. | | | skupper-router -| Used by the initiating site's router to establish a link with another Skupper site. +| Used by the initiating site's router to establish a link with another {skupper-name} site. | Labeled with `skupper.io/type=connection-token` -| (3) TLS between Skupper Router and Applications | skupper-service-ca -| Skupper router, external services +| (3) TLS between {skupper-name} Router and Applications | skupper-service-ca +| {skupper-name} router, external services | Manages CA certificates for TLS termination and connections. | Created by default. Not used if user provides other secrets. | | | skupper-service-client -| Skupper router, external services +| {skupper-name} router, external services | Secures TLS termination at the router and TLS connections to services. | Users can provide their own secrets via \--tls-cert and annotations. From 97c91a1573676e8367eea0ad289e7536e3214380 Mon Sep 17 00:00:00 2001 From: Paul Wright Date: Mon, 14 Oct 2024 18:46:20 +0100 Subject: [PATCH 03/12] update --- kubernetes/con-tls.adoc | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/kubernetes/con-tls.adoc b/kubernetes/con-tls.adoc index 3b572a0..420994e 100644 --- a/kubernetes/con-tls.adoc +++ b/kubernetes/con-tls.adoc @@ -25,6 +25,16 @@ These Secrets, which contain TLS keys and certificates for each of the scenarios When you create a site using the CLI or create a site declaratively using YAML, {skupper-name} creates the required Secrets if they do not already exist. That gives you the ability to use your certificates to populate the Secrets before the site is created. +[NOTE] +==== +For every scenario above, there is a Secret with the *-ca* suffix which is only required if the associated Secrets do not already exist. +For example: + +* The skupper-local-ca Secret is only required if the skupper-local-client and skupper-local-server do not exist. +* The skupper-site-ca Secret is only required if the skupper-site-server and the secret labelled `skupper.io/type=connection-token` do not exist. + +==== + == (1) Mutual TLS with a site Within a {skupper-name} site, both the skupper-service-controller and the skupper-flow-collector (optional, but required for the console) need to connect to the skupper router. From 89f8169ff983731eb95bab105cafcd83167c1bf9 Mon Sep 17 00:00:00 2001 From: Paul Wright Date: Mon, 14 Oct 2024 19:37:04 +0100 Subject: [PATCH 04/12] update --- kubernetes/con-tls.adoc | 67 ++++++++++++++++++++++++++++++----------- 1 file changed, 49 insertions(+), 18 deletions(-) diff --git a/kubernetes/con-tls.adoc b/kubernetes/con-tls.adoc index 420994e..69197b9 100644 --- a/kubernetes/con-tls.adoc +++ b/kubernetes/con-tls.adoc @@ -7,17 +7,17 @@ By default, the traffic between sites is encrypted using mutual TLS providing se The traffic between internal components is also encrypted using mutual TLS. Optionally, the communication between an application and the {skupper-name} router can be encrypted using TLS. -This section describes the Kubernetes secrets involved and when the certificates can be replaced with user-provided certificates. +This section describes the Kubernetes Secrets involved for various scenarios so that you can populate those Secrets using custom certificates if required. == Overview -By default, {skupper-name} creates Certificate Authority certificates to support TLS for the following: +By default, {skupper-name} creates Certificate Authority (CA) certificates to support TLS for the following: -(1)Within a site:: traffic flowing between the router and the service controller (and optionally the flow collector). +(1) Within a site:: traffic flowing between the router and the service controller (and optionally the flow collector). -(2)Between sites:: traffic flowing between a router in one site and a router in another site. +(2) Between sites:: traffic flowing between a router in one site and a router in another site. -(3)Between an application and a router:: traffic flowing between an application and a router. +(3) Between an application and a router:: traffic flowing between an application and a router. When running in Kubernetes, {skupper-name} expects specific Secrets to exist in each namespace where it is installed. These Secrets, which contain TLS keys and certificates for each of the scenarios above, are located in predefined locations. @@ -30,11 +30,13 @@ That gives you the ability to use your certificates to populate the Secrets befo For every scenario above, there is a Secret with the *-ca* suffix which is only required if the associated Secrets do not already exist. For example: -* The skupper-local-ca Secret is only required if the skupper-local-client and skupper-local-server do not exist. -* The skupper-site-ca Secret is only required if the skupper-site-server and the secret labelled `skupper.io/type=connection-token` do not exist. +* The skupper-local-ca Secret is only required if the skupper-local-client and skupper-local-server Secrets do not exist. +* The skupper-site-ca Secret is only required if the skupper-site-server Secret does not exist. ==== +TIP: See your provider documentation for generating certificates. For example, link:https://docs.openshift.com/container-platform/4.17/security/cert_manager_operator/cert-manager-creating-certificate.html#cert-manager-certificate-mgmt_cert-manager-creating-certificate[Creating certificates for user workloads] if you use `cert-manager` on OpenShift. + == (1) Mutual TLS with a site Within a {skupper-name} site, both the skupper-service-controller and the skupper-flow-collector (optional, but required for the console) need to connect to the skupper router. @@ -45,21 +47,50 @@ skupper-local-server:: Contains the key, and the certificate used by the skupper If these Secrets do not exist, {skupper-name} creates them using a certificate authority (CA) to sign the certificates. -For this purpose, {skupper-name} generates another secret: +For this purpose, {skupper-name} generates another Secret: skupper-local-ca:: Contains a key and a self-signed certificate. -NOTE: {skupper-name} will only use this secret if skupper-local-server and skupper-local-client are not populated. - -If skupper-local-client and skupper-local-server Secrets are provided by the user, there is no requirement for the skupper-local-ca Secret. +NOTE: {skupper-name} only uses this Secret if skupper-local-server and skupper-local-client are not populated. == (2) Mutual TLS between sites +When two sites are linked, the routers communicate using mutual TLS and the required keys and certificates are stored in specific Secrets: + +skupper-site-server:: Contains the key, and the certificate used by the skupper-router when accepting links from other sites. +:: Contains the key, and the certificate used by the skupper-router when creating links to other sites. + +To establish a link, both routers must verify the following: + +* The peer's certificate was signed by a trusted CA. +* The certificate of the peer matches the hostname or IP address used to establish the link. + +If these Secrets do not exist, {skupper-name} creates them using a certificate authority (CA) to sign the certificates. + +For this purpose, {skupper-name} generates another Secret: + +skupper-site-ca:: Contains a key and a self-signed certificate. + + +NOTE: {skupper-name} only uses this Secret if skupper-site-server is not populated. == (3) TLS between a router and applications -== Summary of TLS related secrets +When a TLS connection from a client of a service is terminated and re-encrypted at the router, or when the router establishes a TLS connection to a pod implementing the service, additional secrets are required. + +These secrets can always be provided by the user and specified through the `--tls-cert` and `--tls-trust` options to `skupper expose` or by using the equivalent annotations. + +By default, {skupper-name} generates the following secrets for this purpose, all sharing the prefix *skupper-service-*:: + +skupper-service-client:: Contains credentials used for the TLS connection from the router to the pod implementing the service. + +skupper-service-ca:: Contains the trusted CA certificate used for validating client and server certificates in the TLS connection. + +NOTE: The use of these automatically generated secrets is optional; users may provide their own secrets instead. + + +== Summary of TLS related Secrets [cols=5*] |=== @@ -69,8 +100,8 @@ If skupper-local-client and skupper-local-server Secrets are provided by the use | (1) Mutual TLS within a site | skupper-local-ca | core -| Certificate authority for signing skupper-local-client and skupper-local-server secrets. -| Created by default. Not used if user provides other secrets. +| Certificate authority for signing skupper-local-client and skupper-local-server Secrets. +| Created by default. Not used if user provides other Secrets. | | skupper-local-client @@ -89,7 +120,7 @@ If skupper-local-client and skupper-local-server Secrets are provided by the use | skupper-site-ca | core | CA for signing certificates in skupper-site-server and client certificates for links. -| Created by default. Not used if user provides other secrets. +| Created by default. Not used if user provides other Secrets. | | skupper-site-server @@ -97,7 +128,7 @@ If skupper-local-client and skupper-local-server Secrets are provided by the use | Secures incoming connections from other {skupper-name} sites. | Contains key, certificate, and CA certificate. | -| +| | skupper-router | Used by the initiating site's router to establish a link with another {skupper-name} site. | Labeled with `skupper.io/type=connection-token` @@ -105,13 +136,13 @@ If skupper-local-client and skupper-local-server Secrets are provided by the use | (3) TLS between {skupper-name} Router and Applications | skupper-service-ca | {skupper-name} router, external services | Manages CA certificates for TLS termination and connections. -| Created by default. Not used if user provides other secrets. +| Created by default. Not used if user provides other Secrets. | | | skupper-service-client | {skupper-name} router, external services | Secures TLS termination at the router and TLS connections to services. -| Users can provide their own secrets via \--tls-cert and annotations. +| Users can provide their own Secrets via \--tls-cert and annotations. |=== From 15e8ade03c399ed8e3fcd365c2f4f98bad158c6e Mon Sep 17 00:00:00 2001 From: Paul Wright Date: Tue, 15 Oct 2024 14:30:29 +0100 Subject: [PATCH 05/12] update --- kubernetes/con-tls.adoc | 73 +++++++++++++++++++++-------------------- 1 file changed, 37 insertions(+), 36 deletions(-) diff --git a/kubernetes/con-tls.adoc b/kubernetes/con-tls.adoc index 69197b9..d92b5dd 100644 --- a/kubernetes/con-tls.adoc +++ b/kubernetes/con-tls.adoc @@ -11,16 +11,17 @@ This section describes the Kubernetes Secrets involved for various scenarios so == Overview -By default, {skupper-name} creates Certificate Authority (CA) certificates to support TLS for the following: +By default, {skupper-name} creates Certificate Authority (CA) certificates to support TLS for the following traffic: -(1) Within a site:: traffic flowing between the router and the service controller (and optionally the flow collector). +(1) Within a site:: Traffic flowing between the router and the service controller (and optionally the flow collector). -(2) Between sites:: traffic flowing between a router in one site and a router in another site. +(2) Between sites:: Traffic flowing between a router in one site and a router in another site. -(3) Between an application and a router:: traffic flowing between an application and a router. +(3) Between an application and a router:: Traffic flowing between an application and a router. -When running in Kubernetes, {skupper-name} expects specific Secrets to exist in each namespace where it is installed. -These Secrets, which contain TLS keys and certificates for each of the scenarios above, are located in predefined locations. +When running in Kubernetes, {skupper-name} expects specific Secrets that support certificates to exist in each namespace where it is installed. +These Secrets, which contain TLS keys and certificates for each of the scenarios above, are assigned predefined names. +For example, the CA secrets always have a name with the suffix `-ca`. When you create a site using the CLI or create a site declaratively using YAML, {skupper-name} creates the required Secrets if they do not already exist. That gives you the ability to use your certificates to populate the Secrets before the site is created. @@ -30,35 +31,35 @@ That gives you the ability to use your certificates to populate the Secrets befo For every scenario above, there is a Secret with the *-ca* suffix which is only required if the associated Secrets do not already exist. For example: -* The skupper-local-ca Secret is only required if the skupper-local-client and skupper-local-server Secrets do not exist. -* The skupper-site-ca Secret is only required if the skupper-site-server Secret does not exist. +* The `skupper-local-ca` Secret is only required if the `skupper-local-client` and `skupper-local-server` Secrets do not exist. +* The `skupper-site-ca` Secret is only required if the `skupper-site-server` Secret does not exist. ==== -TIP: See your provider documentation for generating certificates. For example, link:https://docs.openshift.com/container-platform/4.17/security/cert_manager_operator/cert-manager-creating-certificate.html#cert-manager-certificate-mgmt_cert-manager-creating-certificate[Creating certificates for user workloads] if you use `cert-manager` on OpenShift. +TIP: See your provider documentation for generating certificates. For example, link:https://docs.openshift.com/container-platform/4.17/security/cert_manager_operator/`cert-manager-creating`-certificate.html#`cert-manager-certificate`-mgmt_cert-`manager-creating-certificate`[Creating certificates for user workloads] if you use `cert-manager` on OpenShift. == (1) Mutual TLS with a site -Within a {skupper-name} site, both the skupper-service-controller and the skupper-flow-collector (optional, but required for the console) need to connect to the skupper router. +Within a {skupper-name} site, both the `skupper-service-controller` and the `skupper-flow-collector` (optional, but required for the console) need to connect to the skupper router. These connections are secured using mutual TLS, and the required keys and certificates are stored in specific Secrets, all sharing the prefix *skupper-local-*: -skupper-local-client:: Contains the key, and the certificate used by the skupper-service-controller and the skupper-flow-collector. -skupper-local-server:: Contains the key, and the certificate used by the skupper router. +`skupper-local-client`:: Contains the key, and the certificate used by the `skupper-service-controller` and the `skupper-flow-collector`. +`skupper-local-server`:: Contains the key, and the certificate used by the skupper router. If these Secrets do not exist, {skupper-name} creates them using a certificate authority (CA) to sign the certificates. For this purpose, {skupper-name} generates another Secret: -skupper-local-ca:: Contains a key and a self-signed certificate. +`skupper-local-ca`:: Contains a key and a self-signed certificate. -NOTE: {skupper-name} only uses this Secret if skupper-local-server and skupper-local-client are not populated. +NOTE: {skupper-name} only uses this Secret if `skupper-local-server` and `skupper-local-client` are not populated. == (2) Mutual TLS between sites When two sites are linked, the routers communicate using mutual TLS and the required keys and certificates are stored in specific Secrets: -skupper-site-server:: Contains the key, and the certificate used by the skupper-router when accepting links from other sites. -:: Contains the key, and the certificate used by the skupper-router when creating links to other sites. +`skupper-site-server`:: Contains the key, and the certificate used by the `skupper-router` when accepting links from other sites. +``:: Contains the key, and the certificate used by the `skupper-router` when creating links to other sites. To establish a link, both routers must verify the following: @@ -69,10 +70,10 @@ If these Secrets do not exist, {skupper-name} creates them using a certificate a For this purpose, {skupper-name} generates another Secret: -skupper-site-ca:: Contains a key and a self-signed certificate. +`skupper-site-ca`:: Contains a key and a self-signed certificate. -NOTE: {skupper-name} only uses this Secret if skupper-site-server is not populated. +NOTE: {skupper-name} only uses this Secret if `skupper-site-server` is not populated. == (3) TLS between a router and applications @@ -83,9 +84,9 @@ These secrets can always be provided by the user and specified through the `--tl By default, {skupper-name} generates the following secrets for this purpose, all sharing the prefix *skupper-service-*:: -skupper-service-client:: Contains credentials used for the TLS connection from the router to the pod implementing the service. +`skupper-service-client`:: Contains credentials used for the TLS connection from the router to the pod implementing the service. -skupper-service-ca:: Contains the trusted CA certificate used for validating client and server certificates in the TLS connection. +`skupper-service-ca`:: Contains the trusted CA certificate used for validating client and server certificates in the TLS connection. NOTE: The use of these automatically generated secrets is optional; users may provide their own secrets instead. @@ -98,49 +99,49 @@ NOTE: The use of these automatically generated secrets is optional; users may pr | Scenario | Secret Name | Components | Category | Notes | (1) Mutual TLS within a site -| skupper-local-ca +| `skupper-local-ca` | core -| Certificate authority for signing skupper-local-client and skupper-local-server Secrets. +| Certificate authority for signing `skupper-local-client` and `skupper-local-server` Secrets. | Created by default. Not used if user provides other Secrets. | -| skupper-local-client -| skupper-service-controller, skupper-flow-collector -| Secures connections to the skupper-router using mutual TLS. +| `skupper-local-client` +| `skupper-service-controller`, `skupper-flow-collector` +| Secures connections to the `skupper-router` using mutual TLS. | The flow collector is an optional component, required for console. | -| skupper-local-server -| skupper-router -| Secures incoming connections from skupper-service-controller and skupper-flow-collector. +| `skupper-local-server` +| `skupper-router` +| Secures incoming connections from `skupper-service-controller` and `skupper-flow-collector`. | The flow collector is an optional component, required for console | (2) Mutual TLS between {skupper-name} Sites -| skupper-site-ca +| `skupper-site-ca` | core -| CA for signing certificates in skupper-site-server and client certificates for links. +| CA for signing certificates in `skupper-site-server` and client certificates for links. | Created by default. Not used if user provides other Secrets. | -| skupper-site-server -| skupper-router +| `skupper-site-server` +| `$1` | Secures incoming connections from other {skupper-name} sites. | Contains key, certificate, and CA certificate. | -| -| skupper-router +| `` +| `skupper-router` | Used by the initiating site's router to establish a link with another {skupper-name} site. | Labeled with `skupper.io/type=connection-token` -| (3) TLS between {skupper-name} Router and Applications | skupper-service-ca +| (3) TLS between {skupper-name} Router and Applications | `skupper-service-ca` | {skupper-name} router, external services | Manages CA certificates for TLS termination and connections. | Created by default. Not used if user provides other Secrets. | | -| skupper-service-client +| `skupper-service-client` | {skupper-name} router, external services | Secures TLS termination at the router and TLS connections to services. | Users can provide their own Secrets via \--tls-cert and annotations. From 8fbdea38836619130e17229bc510f15656287611 Mon Sep 17 00:00:00 2001 From: Paul Wright Date: Tue, 15 Oct 2024 18:17:05 +0100 Subject: [PATCH 06/12] update --- kubernetes/con-tls.adoc | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/kubernetes/con-tls.adoc b/kubernetes/con-tls.adoc index d92b5dd..0d5774a 100644 --- a/kubernetes/con-tls.adoc +++ b/kubernetes/con-tls.adoc @@ -7,11 +7,21 @@ By default, the traffic between sites is encrypted using mutual TLS providing se The traffic between internal components is also encrypted using mutual TLS. Optionally, the communication between an application and the {skupper-name} router can be encrypted using TLS. +In TLS, two key checks occur during the handshake establishing the connection: + +Trust of the peer’s certificate:: The certificate must be validated against a list of trusted Certificate Authorities (CAs). +If the certificate is signed by a trusted CA and the certificate chain is valid, the peer’s certificate is trusted. + +Identity match:: The peer’s identity (for example, domain name) must match the Common Name (CN) or Subject Alternative Names (SANs) in the certificate. +If there is a mismatch, the connection is considered insecure. + +Both conditions must be met for the connection to be secure. + This section describes the Kubernetes Secrets involved for various scenarios so that you can populate those Secrets using custom certificates if required. == Overview -By default, {skupper-name} creates Certificate Authority (CA) certificates to support TLS for the following traffic: +By default, {skupper-name} creates Secrets to support TLS for the following traffic: (1) Within a site:: Traffic flowing between the router and the service controller (and optionally the flow collector). @@ -19,21 +29,21 @@ By default, {skupper-name} creates Certificate Authority (CA) certificates to su (3) Between an application and a router:: Traffic flowing between an application and a router. -When running in Kubernetes, {skupper-name} expects specific Secrets that support certificates to exist in each namespace where it is installed. +When running in Kubernetes, {skupper-name} expects specific Secrets that support TLS for each of the above scenarios in each namespace where it is installed. These Secrets, which contain TLS keys and certificates for each of the scenarios above, are assigned predefined names. -For example, the CA secrets always have a name with the suffix `-ca`. When you create a site using the CLI or create a site declaratively using YAML, {skupper-name} creates the required Secrets if they do not already exist. + That gives you the ability to use your certificates to populate the Secrets before the site is created. [NOTE] ==== +CA Secrets always have a name with the suffix `-ca`. For every scenario above, there is a Secret with the *-ca* suffix which is only required if the associated Secrets do not already exist. For example: * The `skupper-local-ca` Secret is only required if the `skupper-local-client` and `skupper-local-server` Secrets do not exist. * The `skupper-site-ca` Secret is only required if the `skupper-site-server` Secret does not exist. - ==== TIP: See your provider documentation for generating certificates. For example, link:https://docs.openshift.com/container-platform/4.17/security/cert_manager_operator/`cert-manager-creating`-certificate.html#`cert-manager-certificate`-mgmt_cert-`manager-creating-certificate`[Creating certificates for user workloads] if you use `cert-manager` on OpenShift. @@ -43,8 +53,8 @@ TIP: See your provider documentation for generating certificates. For example, l Within a {skupper-name} site, both the `skupper-service-controller` and the `skupper-flow-collector` (optional, but required for the console) need to connect to the skupper router. These connections are secured using mutual TLS, and the required keys and certificates are stored in specific Secrets, all sharing the prefix *skupper-local-*: -`skupper-local-client`:: Contains the key, and the certificate used by the `skupper-service-controller` and the `skupper-flow-collector`. -`skupper-local-server`:: Contains the key, and the certificate used by the skupper router. +`skupper-local-client`:: Contains the key, certificate, and the CA certificate used by the `skupper-service-controller` and the `skupper-flow-collector`. +`skupper-local-server`:: Contains the key, certificate, and the CA certificate used by the skupper router. If these Secrets do not exist, {skupper-name} creates them using a certificate authority (CA) to sign the certificates. @@ -58,8 +68,8 @@ NOTE: {skupper-name} only uses this Secret if `skupper-local-server` and `skuppe When two sites are linked, the routers communicate using mutual TLS and the required keys and certificates are stored in specific Secrets: -`skupper-site-server`:: Contains the key, and the certificate used by the `skupper-router` when accepting links from other sites. -``:: Contains the key, and the certificate used by the `skupper-router` when creating links to other sites. +`skupper-site-server`:: Contains the key, certificate, and the CA certificate used by the `skupper-router` when accepting links from other sites. +``:: Contains the key, certificate, and the CA certificate used by the `skupper-router` when creating links to other sites. To establish a link, both routers must verify the following: @@ -80,16 +90,14 @@ NOTE: {skupper-name} only uses this Secret if `skupper-site-server` is not popul When a TLS connection from a client of a service is terminated and re-encrypted at the router, or when the router establishes a TLS connection to a pod implementing the service, additional secrets are required. -These secrets can always be provided by the user and specified through the `--tls-cert` and `--tls-trust` options to `skupper expose` or by using the equivalent annotations. +These secrets can be provided by the user and specified through the `--tls-cert` and `--tls-trust` options to `skupper expose` or by using the equivalent annotations. -By default, {skupper-name} generates the following secrets for this purpose, all sharing the prefix *skupper-service-*:: +By default, {skupper-name} generates the following secrets for this purpose, all sharing the prefix *skupper-service-*: `skupper-service-client`:: Contains credentials used for the TLS connection from the router to the pod implementing the service. `skupper-service-ca`:: Contains the trusted CA certificate used for validating client and server certificates in the TLS connection. -NOTE: The use of these automatically generated secrets is optional; users may provide their own secrets instead. - == Summary of TLS related Secrets From 0bf579c21029a346e70795d0d920769bf20d511d Mon Sep 17 00:00:00 2001 From: Paul Wright Date: Mon, 21 Oct 2024 14:59:27 +0100 Subject: [PATCH 07/12] update based on feedback --- kubernetes/app-tls.adoc | 21 ++++++++++++++++ kubernetes/con-tls.adoc | 54 ++++++++++++++++------------------------- 2 files changed, 42 insertions(+), 33 deletions(-) create mode 100644 kubernetes/app-tls.adoc diff --git a/kubernetes/app-tls.adoc b/kubernetes/app-tls.adoc new file mode 100644 index 0000000..2aad228 --- /dev/null +++ b/kubernetes/app-tls.adoc @@ -0,0 +1,21 @@ +[id=tls-router-app] += TLS traffic between a router and applications + +This section covers traffic between a client and the router in a site, and then between the router and the server in a different site. + +``` ++-------------+ +------------+ +------------+ +------------+ +| Client |------>| Router West |------>| Router East |------>| Server | ++-------------+ +------------+ +------------+ +------------+ +``` + + +When a TLS connection from a client of a service is terminated and re-encrypted at the router, or when the router establishes a TLS connection to a pod implementing the service, additional secrets are required. + +These secrets can be provided by the user and specified through the `--tls-cert` and `--tls-trust` options to `skupper expose` or by using the equivalent annotations. + +By default, {skupper-name} generates the following secrets for this purpose, all sharing the prefix *skupper-service-*: + +`skupper-service-client`:: Contains credentials used for the TLS connection from the router to the pod implementing the service. + +`skupper-service-ca`:: Contains the trusted CA certificate used for validating client and server certificates in the TLS connection. diff --git a/kubernetes/con-tls.adoc b/kubernetes/con-tls.adoc index 0d5774a..9b3faad 100644 --- a/kubernetes/con-tls.adoc +++ b/kubernetes/con-tls.adoc @@ -3,9 +3,11 @@ include::../partials/attributes.adoc[] [id="understanding-tls"] = Understanding TLS certificates for Kubernetes sites -By default, the traffic between sites is encrypted using mutual TLS providing secure communication between Kubernetes clusters. -The traffic between internal components is also encrypted using mutual TLS. -Optionally, the communication between an application and the {skupper-name} router can be encrypted using TLS. +The traffic between sites is encrypted using mutual TLS providing secure communication between Kubernetes clusters. +If you do not provide certificates as described in this section, certificates are generated to create the mutual TLS connection. +The traffic between components within the site is also encrypted using mutual TLS. + +{skupper-name} supports end-to-end encryption of your application traffic, however you might want to avoid encrypt traffic from client to router and then from router to server as described in xref:tls-router-app[] In TLS, two key checks occur during the handshake establishing the connection: @@ -15,7 +17,7 @@ If the certificate is signed by a trusted CA and the certificate chain is valid, Identity match:: The peer’s identity (for example, domain name) must match the Common Name (CN) or Subject Alternative Names (SANs) in the certificate. If there is a mismatch, the connection is considered insecure. -Both conditions must be met for the connection to be secure. +Both conditions must be met for the connection to be established. This section describes the Kubernetes Secrets involved for various scenarios so that you can populate those Secrets using custom certificates if required. @@ -23,44 +25,41 @@ This section describes the Kubernetes Secrets involved for various scenarios so By default, {skupper-name} creates Secrets to support TLS for the following traffic: -(1) Within a site:: Traffic flowing between the router and the service controller (and optionally the flow collector). +(1) Within a site:: Traffic flowing between a router and the service controller. -(2) Between sites:: Traffic flowing between a router in one site and a router in another site. +(2) Between sites:: Traffic flowing between routers, including between routers in different sites. -(3) Between an application and a router:: Traffic flowing between an application and a router. When running in Kubernetes, {skupper-name} expects specific Secrets that support TLS for each of the above scenarios in each namespace where it is installed. These Secrets, which contain TLS keys and certificates for each of the scenarios above, are assigned predefined names. When you create a site using the CLI or create a site declaratively using YAML, {skupper-name} creates the required Secrets if they do not already exist. -That gives you the ability to use your certificates to populate the Secrets before the site is created. +If you use your certificates to populate the Secrets before the site is created, {skupper-name} uses those certificates. [NOTE] ==== CA Secrets always have a name with the suffix `-ca`. -For every scenario above, there is a Secret with the *-ca* suffix which is only required if the associated Secrets do not already exist. +For every scenario above, there is a Secret with the *-ca* suffix which are only used if the associated Secrets do not already exist. For example: -* The `skupper-local-ca` Secret is only required if the `skupper-local-client` and `skupper-local-server` Secrets do not exist. -* The `skupper-site-ca` Secret is only required if the `skupper-site-server` Secret does not exist. +* The `skupper-local-ca` Secret is only used if the `skupper-local-client` and `skupper-local-server` Secrets do not exist. +* The `skupper-site-ca` Secret is only used if the `skupper-site-server` Secret does not exist. + +// Possible update would be to link to article outlining 'replacing CAs' ==== TIP: See your provider documentation for generating certificates. For example, link:https://docs.openshift.com/container-platform/4.17/security/cert_manager_operator/`cert-manager-creating`-certificate.html#`cert-manager-certificate`-mgmt_cert-`manager-creating-certificate`[Creating certificates for user workloads] if you use `cert-manager` on OpenShift. -== (1) Mutual TLS with a site - -Within a {skupper-name} site, both the `skupper-service-controller` and the `skupper-flow-collector` (optional, but required for the console) need to connect to the skupper router. -These connections are secured using mutual TLS, and the required keys and certificates are stored in specific Secrets, all sharing the prefix *skupper-local-*: +== (1) Mutual TLS within a site -`skupper-local-client`:: Contains the key, certificate, and the CA certificate used by the `skupper-service-controller` and the `skupper-flow-collector`. -`skupper-local-server`:: Contains the key, certificate, and the CA certificate used by the skupper router. +Within a {skupper-name} site, the service controller pod needs to connect to the skupper router. +This connection is secured using mutual TLS, and the required keys and certificates are stored in specific Secrets, all sharing the prefix *skupper-local-*: -If these Secrets do not exist, {skupper-name} creates them using a certificate authority (CA) to sign the certificates. - -For this purpose, {skupper-name} generates another Secret: +`skupper-local-client`:: Contains the key and certificate for the service controller, along with a list of trusted certificates used for verifying peer certificates. +`skupper-local-server`:: Contains the key and certificate for the router, along with a list of trusted certificates used for verifying peer certificates. -`skupper-local-ca`:: Contains a key and a self-signed certificate. +If these Secrets do not exist, {skupper-name} creates them using a self-signed certificate generated by {skupper-name} when the site is created and stored in the `skupper-local-ca` Secret. NOTE: {skupper-name} only uses this Secret if `skupper-local-server` and `skupper-local-client` are not populated. @@ -86,18 +85,7 @@ For this purpose, {skupper-name} generates another Secret: NOTE: {skupper-name} only uses this Secret if `skupper-site-server` is not populated. -== (3) TLS between a router and applications - -When a TLS connection from a client of a service is terminated and re-encrypted at the router, or when the router establishes a TLS connection to a pod implementing the service, additional secrets are required. - -These secrets can be provided by the user and specified through the `--tls-cert` and `--tls-trust` options to `skupper expose` or by using the equivalent annotations. - -By default, {skupper-name} generates the following secrets for this purpose, all sharing the prefix *skupper-service-*: - -`skupper-service-client`:: Contains credentials used for the TLS connection from the router to the pod implementing the service. - -`skupper-service-ca`:: Contains the trusted CA certificate used for validating client and server certificates in the TLS connection. - +include::app-tls.adoc[leveloffset=+1] == Summary of TLS related Secrets From fb42d9d53fee8f11de617ab95dd40a4cee36b0a2 Mon Sep 17 00:00:00 2001 From: Paul Wright Date: Tue, 22 Oct 2024 13:56:56 +0100 Subject: [PATCH 08/12] update based on feedback --- images/app-traffic.png | Bin 0 -> 26424 bytes images/tls-traffic.png | Bin 0 -> 15144 bytes kubernetes/app-tls.adoc | 30 ++++++++---- kubernetes/con-tls.adoc | 98 +++++++++++++++++----------------------- 4 files changed, 63 insertions(+), 65 deletions(-) create mode 100644 images/app-traffic.png create mode 100644 images/tls-traffic.png diff --git a/images/app-traffic.png b/images/app-traffic.png new file mode 100644 index 0000000000000000000000000000000000000000..543b5250d7df9feffe323300575001833aec55b1 GIT binary patch literal 26424 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 literal 0 HcmV?d00001 diff --git a/images/tls-traffic.png b/images/tls-traffic.png new file mode 100644 index 0000000000000000000000000000000000000000..d4e05e4e862cf0956d3d6d2d4148b5a6a2882194 GIT binary patch literal 15144 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 literal 0 HcmV?d00001 diff --git a/kubernetes/app-tls.adoc b/kubernetes/app-tls.adoc index 2aad228..e685acf 100644 --- a/kubernetes/app-tls.adoc +++ b/kubernetes/app-tls.adoc @@ -1,21 +1,33 @@ +// Type: concept [id=tls-router-app] -= TLS traffic between a router and applications += Understanding TLS traffic between applications and routers This section covers traffic between a client and the router in a site, and then between the router and the server in a different site. -``` -+-------------+ +------------+ +------------+ +------------+ -| Client |------>| Router West |------>| Router East |------>| Server | -+-------------+ +------------+ +------------+ +------------+ -``` +If you need information about TLS traffic between sites or traffic between {skupper-name} components within a site, see xref:understanding-tls[]. +Consider the following scenarios: -When a TLS connection from a client of a service is terminated and re-encrypted at the router, or when the router establishes a TLS connection to a pod implementing the service, additional secrets are required. +// https://docs.google.com/drawings/d/1o5af8M4alYq206SawaFpFoLnr_8QXxbC40hSRNnBW1w/edit +image::../images/app-traffic.png[Three different network routing configurations between a client, router(s), and server with varying types of encrypted and unencrypted connections represented by dashed and solid arrows.] -These secrets can be provided by the user and specified through the `--tls-cert` and `--tls-trust` options to `skupper expose` or by using the equivalent annotations. -By default, {skupper-name} generates the following secrets for this purpose, all sharing the prefix *skupper-service-*: +* An HTTP application that receives requests from a client in a remote site. +The connection between the client and the router and the connection between the remote router and the server are unencrypted. +The + +* An HTTPS application where the traffic is encrypted by the client and unencrypted by the remote server. + +* An HTTP application where traffic is encrypted at every stage: between the client and the router, between the routers, and between the router and the server at the remote site. + +This section describes that third scenario, and the Secrets required to have TLS between the application and the router. + +When a TLS connection from a client of a service is terminated and re-encrypted at the router, or when the router establishes a TLS connection to a pod implementing the service, additional Secrets are required. + +By default, {skupper-name} generates the following Secrets for this purpose, all sharing the prefix *skupper-service-*: `skupper-service-client`:: Contains credentials used for the TLS connection from the router to the pod implementing the service. `skupper-service-ca`:: Contains the trusted CA certificate used for validating client and server certificates in the TLS connection. + +These Secrets can be provided by the user and specified through the `--tls-cert` and `--tls-trust` options to `skupper expose` or by using the equivalent annotations. diff --git a/kubernetes/con-tls.adoc b/kubernetes/con-tls.adoc index 9b3faad..f0bc3e0 100644 --- a/kubernetes/con-tls.adoc +++ b/kubernetes/con-tls.adoc @@ -5,9 +5,13 @@ include::../partials/attributes.adoc[] The traffic between sites is encrypted using mutual TLS providing secure communication between Kubernetes clusters. If you do not provide certificates as described in this section, certificates are generated to create the mutual TLS connection. -The traffic between components within the site is also encrypted using mutual TLS. +The traffic between {skupper-name} components within a site is also encrypted using mutual TLS. -{skupper-name} supports end-to-end encryption of your application traffic, however you might want to avoid encrypt traffic from client to router and then from router to server as described in xref:tls-router-app[] +// https://docs.google.com/drawings/d/1o5af8M4alYq206SawaFpFoLnr_8QXxbC40hSRNnBW1w/edit +image::../images/tls-traffic.png[Encrypted traffic internally for two sites and between those sites] + + +The xref:tls-router-app[] section describes TLS traffic between a client and the router in a site, and then between the router and the server in a different site. In TLS, two key checks occur during the handshake establishing the connection: @@ -21,13 +25,13 @@ Both conditions must be met for the connection to be established. This section describes the Kubernetes Secrets involved for various scenarios so that you can populate those Secrets using custom certificates if required. -== Overview +== Overview of TLS within and between sites By default, {skupper-name} creates Secrets to support TLS for the following traffic: -(1) Within a site:: Traffic flowing between a router and the service controller. +xref:tls-within-site[]:: Traffic flowing between a router and the service controller. -(2) Between sites:: Traffic flowing between routers, including between routers in different sites. +xref:tls-between-sites[]:: Traffic flowing between routers, including between routers in different sites. When running in Kubernetes, {skupper-name} expects specific Secrets that support TLS for each of the above scenarios in each namespace where it is installed. @@ -40,18 +44,14 @@ If you use your certificates to populate the Secrets before the site is created, [NOTE] ==== CA Secrets always have a name with the suffix `-ca`. -For every scenario above, there is a Secret with the *-ca* suffix which are only used if the associated Secrets do not already exist. -For example: - -* The `skupper-local-ca` Secret is only used if the `skupper-local-client` and `skupper-local-server` Secrets do not exist. -* The `skupper-site-ca` Secret is only used if the `skupper-site-server` Secret does not exist. - +These are only used to generate certificates if the associated Secrets do not already exist. // Possible update would be to link to article outlining 'replacing CAs' ==== TIP: See your provider documentation for generating certificates. For example, link:https://docs.openshift.com/container-platform/4.17/security/cert_manager_operator/`cert-manager-creating`-certificate.html#`cert-manager-certificate`-mgmt_cert-`manager-creating-certificate`[Creating certificates for user workloads] if you use `cert-manager` on OpenShift. -== (1) Mutual TLS within a site +[id="tls-within-site"] +== Mutual TLS within a site Within a {skupper-name} site, the service controller pod needs to connect to the skupper router. This connection is secured using mutual TLS, and the required keys and certificates are stored in specific Secrets, all sharing the prefix *skupper-local-*: @@ -59,87 +59,73 @@ This connection is secured using mutual TLS, and the required keys and certifica `skupper-local-client`:: Contains the key and certificate for the service controller, along with a list of trusted certificates used for verifying peer certificates. `skupper-local-server`:: Contains the key and certificate for the router, along with a list of trusted certificates used for verifying peer certificates. -If these Secrets do not exist, {skupper-name} creates them using a self-signed certificate generated by {skupper-name} when the site is created and stored in the `skupper-local-ca` Secret. +If these Secrets do not exist, {skupper-name} generates and signs those certificates using a self-signed CA certificate created during site setup, which is then stored in the `skupper-local-ca` Secret. -NOTE: {skupper-name} only uses this Secret if `skupper-local-server` and `skupper-local-client` are not populated. +NOTE: {skupper-name} only uses the `skupper-local-ca` Secret if `skupper-local-server` and `skupper-local-client` are not populated. -== (2) Mutual TLS between sites +[id="tls-between-sites"] +== Mutual TLS between sites When two sites are linked, the routers communicate using mutual TLS and the required keys and certificates are stored in specific Secrets: `skupper-site-server`:: Contains the key, certificate, and the CA certificate used by the `skupper-router` when accepting links from other sites. ``:: Contains the key, certificate, and the CA certificate used by the `skupper-router` when creating links to other sites. -To establish a link, both routers must verify the following: - -* The peer's certificate was signed by a trusted CA. -* The certificate of the peer matches the hostname or IP address used to establish the link. - -If these Secrets do not exist, {skupper-name} creates them using a certificate authority (CA) to sign the certificates. +To establish a link, both routers must verify the peer's certificate was signed by a trusted CA. -For this purpose, {skupper-name} generates another Secret: +The router on the linking site must verify the certificate of the peer matches the hostname or IP address used to establish the link. -`skupper-site-ca`:: Contains a key and a self-signed certificate. +If these Secrets do not exist, {skupper-name} generates and signs those certificates using a self-signed CA certificate created during site setup, which is then stored in the `skupper-site-ca` Secret. +NOTE: {skupper-name} only uses the `skupper-site-ca` Secret if `skupper-site-server` is not populated. -NOTE: {skupper-name} only uses this Secret if `skupper-site-server` is not populated. +include::app-tls.adoc[leveloffset=0] -include::app-tls.adoc[leveloffset=+1] += Summary of TLS related Secrets -== Summary of TLS related Secrets - -[cols=5*] +[cols=3s*] |=== -| Scenario | Secret Name | Components | Category | Notes +| Scenario | Secret Name | Notes -| (1) Mutual TLS within a site +| Mutual TLS within a site | `skupper-local-ca` -| core | Certificate authority for signing `skupper-local-client` and `skupper-local-server` Secrets. -| Created by default. Not used if user provides other Secrets. +Created by default. Not used if user provides other Secrets. | | `skupper-local-client` -| `skupper-service-controller`, `skupper-flow-collector` -| Secures connections to the `skupper-router` using mutual TLS. -| The flow collector is an optional component, required for console. +| The key and certificate for the service controller. | | `skupper-local-server` -| `skupper-router` -| Secures incoming connections from `skupper-service-controller` and `skupper-flow-collector`. -| The flow collector is an optional component, required for console +| The key and certificate for the router. -| (2) Mutual TLS between {skupper-name} Sites +| Mutual TLS between {skupper-name} sites | `skupper-site-ca` -| core -| CA for signing certificates in `skupper-site-server` and client certificates for links. -| Created by default. Not used if user provides other Secrets. +| Certificate authority for signing certificates in `skupper-site-server` and client certificates for links. +Created by default. Not used if user provides other Secrets. | | `skupper-site-server` -| `$1` -| Secures incoming connections from other {skupper-name} sites. | Contains key, certificate, and CA certificate. +| The key and certificate for securing incoming links from other sites. + | | `` -| `skupper-router` -| Used by the initiating site's router to establish a link with another {skupper-name} site. -| Labeled with `skupper.io/type=connection-token` - -| (3) TLS between {skupper-name} Router and Applications | `skupper-service-ca` -| {skupper-name} router, external services -| Manages CA certificates for TLS termination and connections. -| Created by default. Not used if user provides other Secrets. -| +| The key and certificate for securing outgoing links to other sites. +Labeled with `skupper.io/type=connection-token` + +| TLS between {skupper-name} Router and Applications +| `skupper-service-ca` +| Certificate authority for signing `skupper-service-client`. +Created by default. Not used if user provides `skupper-service-client` Secret. + | | `skupper-service-client` -| {skupper-name} router, external services -| Secures TLS termination at the router and TLS connections to services. -| Users can provide their own Secrets via \--tls-cert and annotations. +| The key and certificate for securing connection between application and router. |=== From a8dcbed351067523ae0a8e4b15a6fbd9121ec90c Mon Sep 17 00:00:00 2001 From: Paul Wright Date: Mon, 11 Nov 2024 14:21:14 +0000 Subject: [PATCH 09/12] update based on feedback --- kubernetes/con-tls.adoc | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/kubernetes/con-tls.adoc b/kubernetes/con-tls.adoc index f0bc3e0..c09947a 100644 --- a/kubernetes/con-tls.adoc +++ b/kubernetes/con-tls.adoc @@ -11,7 +11,7 @@ The traffic between {skupper-name} components within a site is also encrypted us image::../images/tls-traffic.png[Encrypted traffic internally for two sites and between those sites] -The xref:tls-router-app[] section describes TLS traffic between a client and the router in a site, and then between the router and the server in a different site. +NOTE: This section describes traffic between sites and traffic between {skupper-name} components within a site. In addition, the xref:tls-router-app[] section describes TLS traffic between a client and the router in a site, and then between the router and the server in a different site. In TLS, two key checks occur during the handshake establishing the connection: @@ -25,14 +25,13 @@ Both conditions must be met for the connection to be established. This section describes the Kubernetes Secrets involved for various scenarios so that you can populate those Secrets using custom certificates if required. -== Overview of TLS within and between sites +== Overview of TLS between sites and within a site By default, {skupper-name} creates Secrets to support TLS for the following traffic: -xref:tls-within-site[]:: Traffic flowing between a router and the service controller. - xref:tls-between-sites[]:: Traffic flowing between routers, including between routers in different sites. +xref:tls-within-site[]:: Traffic flowing between a router and the service controller. When running in Kubernetes, {skupper-name} expects specific Secrets that support TLS for each of the above scenarios in each namespace where it is installed. These Secrets, which contain TLS keys and certificates for each of the scenarios above, are assigned predefined names. @@ -48,20 +47,7 @@ These are only used to generate certificates if the associated Secrets do not al // Possible update would be to link to article outlining 'replacing CAs' ==== -TIP: See your provider documentation for generating certificates. For example, link:https://docs.openshift.com/container-platform/4.17/security/cert_manager_operator/`cert-manager-creating`-certificate.html#`cert-manager-certificate`-mgmt_cert-`manager-creating-certificate`[Creating certificates for user workloads] if you use `cert-manager` on OpenShift. - -[id="tls-within-site"] -== Mutual TLS within a site - -Within a {skupper-name} site, the service controller pod needs to connect to the skupper router. -This connection is secured using mutual TLS, and the required keys and certificates are stored in specific Secrets, all sharing the prefix *skupper-local-*: - -`skupper-local-client`:: Contains the key and certificate for the service controller, along with a list of trusted certificates used for verifying peer certificates. -`skupper-local-server`:: Contains the key and certificate for the router, along with a list of trusted certificates used for verifying peer certificates. - -If these Secrets do not exist, {skupper-name} generates and signs those certificates using a self-signed CA certificate created during site setup, which is then stored in the `skupper-local-ca` Secret. - -NOTE: {skupper-name} only uses the `skupper-local-ca` Secret if `skupper-local-server` and `skupper-local-client` are not populated. +TIP: See your provider documentation for generating certificates. For example, link:https://docs.openshift.com/container-platform/4.17/security/cert_manager_operator/cert-manager-creating-certificate.html#cert-manager-certificate-mgmt_cert-manager-creating-certificate[Creating certificates for user workloads] if you use `cert-manager` on OpenShift. [id="tls-between-sites"] == Mutual TLS between sites @@ -80,6 +66,20 @@ If these Secrets do not exist, {skupper-name} generates and signs those certific NOTE: {skupper-name} only uses the `skupper-site-ca` Secret if `skupper-site-server` is not populated. +[id="tls-within-site"] +== Mutual TLS within a site + +Within a {skupper-name} site, the service controller pod needs to connect to the skupper router. +This connection is secured using mutual TLS, and the required keys and certificates are stored in specific Secrets, all sharing the prefix *skupper-local-*: + +`skupper-local-client`:: Contains the key and certificate for the service controller, along with a list of trusted certificates used for verifying peer certificates. +`skupper-local-server`:: Contains the key and certificate for the router, along with a list of trusted certificates used for verifying peer certificates. + +If these Secrets do not exist, {skupper-name} generates and signs those certificates using a self-signed CA certificate created during site setup, which is then stored in the `skupper-local-ca` Secret. + +NOTE: {skupper-name} only uses the `skupper-local-ca` Secret if `skupper-local-server` and `skupper-local-client` are not populated. + + include::app-tls.adoc[leveloffset=0] = Summary of TLS related Secrets From 8006565ba9298a0fbf3c3113a5f11f116b132c0e Mon Sep 17 00:00:00 2001 From: Paul Wright Date: Mon, 11 Nov 2024 14:56:27 +0000 Subject: [PATCH 10/12] update --- images/app-traffic.png | Bin 26424 -> 43217 bytes images/tls-traffic.png | Bin 15144 -> 17518 bytes kubernetes/app-tls.adoc | 8 ++++---- kubernetes/con-tls.adoc | 6 ++++-- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/images/app-traffic.png b/images/app-traffic.png index 543b5250d7df9feffe323300575001833aec55b1..ebf406fd1815eebf3fb28176ff2e50d82fbd67bc 100644 GIT binary patch literal 43217 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

b}J8Y&n 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 literal 26424 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 diff --git a/images/tls-traffic.png b/images/tls-traffic.png index d4e05e4e862cf0956d3d6d2d4148b5a6a2882194..ea76e391d956d9d75f5edf45c7185b762b198633 100644 GIT binary patch literal 17518 zcmeIZWmH?=+Am6hmf#5#DNe9LaSvVyQnW~mLkq!hfkF5}395yGf!T?^ zJ^(yI|0jjvQe$8|jPTacbJcq5!QklZU}X z7=kG)`(+&v`rSE%MmpAt)yu)QrjE?WT!5dU_?I9zvO>D%CP;z5R*7C)tu8k*Qb^Hi zTDRpk%oKjms;a$Ps9A@+tF7L7;!e0?lIa`&VdYN_+a)pnz=C+$0gu$VaDd+SX8o~S zpwxg5qmKvd?Omi*9pwAX^~ws-aaL{|x0oUi)x3elhloh(eebrTTU>Fw(`Iu5NpeJx z_=(#UXZWZL^o({wppGwrzZrc)wg>)9_dTN?h-=I@OLc?s#Xrxzk1p>u_)smk+A$i> zG(2NwZY=n2y)67+r5%?HO4#^4FxXhKUHJnqNvc3t^bSjm0h}~}Ix7U%%o+zyUy2uL z#P}0^$Xu^VqLFQn6FxZlv{qm@P^>LMg^Cf)V+(0X!h{lGtuF&&NDtT`56gYI3nmOc zO>YZ!hGH#TvXOhY(8jN8TLm42JP+;(9lh@uJRllgqyRTlHVjP|71 z2TcvOs5E##`Ov2o;l**BZiNC+Ng1=bI}4>p0&9u)#S>VzMe3Lv1+0CtT7-7xgi-~U zfo6Wkv=W#M5nQp&++>nO&!(>ov_TogyEtTO5PJTk5-<7G3LS!hCtG*$lNrMHHU%iKE+RsAK$5^1Z|a z#+GiqkLKAH#)k3ueNUQSF8%Qq+j5wS^#zR+EMs|co<+)DxJ;WwgRtZ5V0hcruMY%R zm>7hqYDVNhE)~>i#ZUVT3_XK}^-AQavF_@;^*CjBR1_b+1a3qGsukmAfI^gqMj(A^;M12v`)Nyb5yNQJ>KG!rox3Efe3gyJg8Zt}2`4#-VZUk4k zoG~U=Q}^`Ugt={C%9JqsELLUWMUQuSe!t{gFP)$aAo;uYg78mDj_jua?E{l_Wi%>OGurgc4%>%Hn?5 z)M7@JGGCgI+*0Fc_I6i|XD$#k&`tFBqs+YPL%rrl$C!~jANQ=6=;w3s!g0Q%1t@D7H7 z!GQ4s`dr7;HBuUHppWgJ}&WJ;<`5_Rt&1Dzc4*xaI4GyaKns=kA`wO zHZ#KmTqPMyl7ztjx%@xtu#_pIEh6nt+_4Kx6CwH*5DUK)-MTI7y@^Zz^~_z+9nV8p zrL^N68~w!w&9Ow)2ewoQfe z7e?DV5acvz^_s4`ObI6;|F_$z08uV9J^sdPO6?M`Tl3?a*ECZ*RU?S9*>bgvQm6iv z$byDx6BuE~#C)vyo0d8=dJVT9{)=J%ne*+Jm=4{`zvby)@OU!##yf_Ncfdu8XqE_$ zE?W*M;ELe~2A@0Rd`aZ#sP5tq#o?*Noa^iPhkjih6#maeciTwf0(;I03!82`5Ym7g zzMDPANo-&Y=UBb3D)6(f5s`{qR&RxtDwATDb!~H1IBP<6c+Pl$e0~YPxlmp zC+uFzH+>Lulsf3%5jBFq3BMQ1?7vt*6ov+{-3&NtkqP7X!A`9#jqs%cwscip!Yhc8S1!iqG$JjiAt4ryF^7oTqzZi- zAvTu(TJthUAj)8`9&&Shh_90UkUiK#2lXKtF6VjsmH)O6CBfF}fg(ZVglf?HzeWil zNZSWd6NG5Gb{ zPL56isQKpgY+oKix?)%n$kaVRQQ&;qakvt$L49}TI4LRk@0~6q2VejQ;?^erc&~|( z`?246Zn?}?UsB2eSFzFz${9&BMjBUn`(CswivQ|W0sE&SFc?=3$fN(6Ro2%PrHCk1 zgreYs{JEc^!$>6+W{>7XZVV9%p%tWYj8u^r4kYSyCvEGN6cZC=@RKTCOOZRK?)^l~ z-AyOZ~Vtfnx@D2OxmB08m(oxCEfF!~wZ2_ry`_fhP!JKEI z7TPeTinxASa&?`C6vn_099(bw(t9E&CtdISZJuQ97T~i{d79fufj!q9)2AtL6<2zV@E>JH|0lPmK3<5#x_xrdi;JF^$hJadc#?HH4H2pyv3B zi!XZ$e(uhrTFrmf(n}w1Pn7tJJ;CYnA}lHGJA#KP377I>-`*lj@fBU2_bHPfwre~6 zXyo?LDY*QyIMfvhbcqFi6_3!K3wqWo2GHGSY0%knl7w|#5Js>ByLTRT=%&<+$RnVM zkn(D$TVO}2oY+H5%AxCG-!r-YfV`_zP|F(78n40%3Px{a=I=^BQ=YC{A|R7PYawtO zDaAt_d`)ZtGqO(kQ*t>dW3RPXpOV8Dh+pp^9PT34D`J-Zry9g~YrHwsbM)CoEyFC` zkLGamJFQ6FU}C^}qoKJ&uR`UIZKDf)Ps?Bo7G%l+G;m0B)1mKz)5yG9335qC`nFU9 zZ%DT*0O-HeIJfhC@M3TV{KstJP^fEY2M_Rj0-HDmPnu}gJ--5%hUn|S_pdr z#c6OnrJR8cK1!*O)Ld?YuizG9KKI50nKYVJhDmqe%t}E%xI2}(ynpD`c|%@b#3}bu z`)EKx&?j-yEakhdi~Fd6qPnF0c`bb$}kz(jV0PR(A#~|J5Nyyu;YMa!DWuMOB{iV zQRxB?O;z8`TSQZnG;2#ONYbB~W_k|TdE-F(@Xj73l>E@No2?kHvR70QymC*-mi3?< zdiEA7n6ewXy(vbBfB!VoE%L6KXeM+MU@|GJAfO{Rs4CX?n)m0o*`&bYr5 z<-$yjs3F{B9EVWESa^iS6C(AV?q-`svi@i03P>A0p?M{__0X zp}u(L$xUuunCqIm!0WjCSX61xhs`u;W7Kt)XNOr%12yzjCGk%x?ZrN?h`av z_nG~Tm#TyQr4$65rgWHDwsZ-tXCjec$h2k`X1>`QboD@4JAhP&Fgl8}8G<9R$Bdhb zBD#@zO9)J#n188EUN@3$Nw;kG!b~A{GLP^M?fGi~zT1++uw9yo26L&2btK2obswAT z#oFZ6La!ibbqC&I@cBLqwMW*jDGJVTCA6DAqz`3EyMN;UN|c?3vhUDLbk~9E?%+_r zO9cO(8LgQNiplv}c(v#pyY~+dTY5*h&tJ^NhgQ&yws(-U`=Nd%yOGC?(Q=&7$B$9N zLE)6hDlbtR9KiKLSI*OvpTg%FwO+-JgPsgG=Y!ufiHFJoE9{xuf-`~E{*YH8KNAVz zFX$QHOG6ZX`i&gkhnkX0eXj)}Tg*|I$(wsQMLRTz!yb2{01n?s$NKvfG>cFlU23BI zk`HuriWYC!GtIN5Ggokt=NE_6T_-}Z1A?{|m%c}r&Z09;g7{sp@p2$H$&RQ`*)A@q zPn@OZD!snteRc?)-{r((eS>aWH^tjdZKBf$5hvnIYM4Yc&pNcH*Y(nJ{_OGvC2Td^ z%p8g<4`n9(NCPBl$1=m zu38yFYZjjt0rU|@i|J#vHPXb9rfgsw@ZLpqje;roPD}KL8xQFVim4-DRGI_WOn0zm zp2ZiHW`^;Bvu-Uwy;9Y*Pe>~vA~cCo{4`sBaN9XJ-zPjQvc#2e?YGbKNgwn9!Nw0X2FMzQRp&DS2c#`CqPd8xwmT931)KmOJw)O)ky@M|Bhj zDWrnFk3ZB}xO;FHAzdl9u)I(sA&+UGR+cY zGz3gmOeH6X+TpA$aS0yU0m6iG6JWV^P!LF_MaPn%w4R$wnxTN0!;eQ}A849QG}bp# zJq53U8F3W64REx{%jt978W$-*Bs5h~^$D|sRIx=4NIN4AH$?ezhdm;!G&O3;OpJU8 z7*#IO6Q!rhq|TS()K)ycA(&2WewF4pn5PB5v@lfEID(jdv7*7T_WH8?|wH<)e+oVFv^1?rk>+}9Z#q$vX4m|8rfOb)<-{@@v; zzWzu3SPKT-$h>!LN)cfU(&USNN;jd?J#UN52wI4Wu^HlFX)Ly z9&QhcYfLket9-`_`65_5mpf{s<15jUj|k0myeJ9 zf*eEd0;71SbD%CFWu+=}fN$&Y$d@E65>3^mSL@%?9Rgf@hr+ zB*~xYf|L*@=wPIIKIRazeGnK`L79^|#)_B!fJA~d>o8L&EvWJY9+{u~rw%16AeI}Z#6Q8`y%P_=4xRFCcSCI$K#o;hL2|s) z)yK`8R<|^or6%`3(w--IUmxa#y3j!h1N7U>eqGQkEedUs28}4Vl1#)hRukc^aNmp{ zHozmRO}e@`G6dQ`^5BB;I^nD^h{i$+E20A6k;9fu)ne>Eh3~^I*2KZS1&-Ll zT~6P=y8$!m2tYCYNTbGmw(yhduWNGhQGSe+ps87P1oU=D!PT$+@P?W(_NyHLX;)V+ zu<)x|#hlg79Uplyc#DY zYF-b1_x~sOm{*qpExLz)((YQUnv_Eb)~p!KV+1LjI#(R(!)qo`Yv)sglE005DaA>{s9JNIhyWOK zfB@gBX-Q3A6R|llr zzj{igBt`{q7p@6%(tw7&NHtmTVl3SAT@tzy>=9{ia_GaE;xq^qTP>N6rK)VT4BUcW zls^Q`4|QD<`U~9T9v(!Hc9vNgsrWDGpsWY_&wot{67b+jb7kWF*hlDKShuYPD1Q1k zj0+~ov^{+z=VA6Xi~$_%MV;S#<6ly?9rpaTev)e$TR{&G%L7BVi(heF5@1?OV0hJ&Kt`?O~vKXwNc& z244Z1R#L-{Mpn&FI$IC z>9kup=kb4;#h^HFrO_TN!dbt6%df*!KjoppokT-5W@7m@$L{!E^cT6Ozz6cHs>3ER zVfWl+GCE1ek(^d?s!SX;j7gCIlCOpmnP->7;YF4vbKKY890=;mw@C(T;arAe9S;RbrbPQBG?WO9D44Gc{U?V&0*2G*!0|>`D7)2d) z^}W{7da(#Yi;v+dwy3bWud03}LeH$OSS`RdbP&J`0goMc5dbe#TK>_4W@Y@ z+f6K|%1}#R?5mhoN_OWi3X%&I9~lG?+D$vgVS%8`4!4JeT_6L%Og!8aFjnua>d0M@ zw3W<80psCi=!)sw7Zf>U^((3uE#KfCS&76OXA>#aFg zMMX6R3&B6`fVzNpq7syG<2^9da!P*<(Og2gN_*hlbJ4YoKSK+TpS`l%L_uer)Y24Y zt3J#%x?^=w5Fou@vT|1Q1?)KbvoXPa!YU|6-SX@R7$L@@W{q|N-Kjwcqp{R37x`xu za0imFV-QVpFy!8nJkn+~XE(XbRJAgo+lA{|d3f<@<}G6|A|;?>w^y)l7-DuaeQA7{ z0sYzapnN!Q4SvS%vPubY@Rz&sAM7JD{r|L6{IW}WSU2!$X8RJElY8i?PW4cjX3lWi{yQ=bdQG~$^qb3PJKWUwsOP}v?020Tv81Gi3g%Mwk2F5> z4>6x8fBw9Ry9zr7yWwb3L0iuI zPu)zE)>gL9zTltQsro9YNa}w#53C(96@nLJP?IV=YPMx{ujd`%g!ra@XTPSL`e;*g z&5c!xOUj$yHyNP}^B;rH`-Z3 z4*IJa(${lilZOcS6jQv!M|H?%k}I50Bwt%YvhLeY$@AGfVCn2DUE^f#j+^7x`$t0~ zCip=9F#pLfqxEH<1GQ)6 zjb`&Ug;|qEE+fg7pDj{q2Us(hp**sp3n_*lK9d_*e?1*w%gHB}LNUmXov%Fr=Dn;f zgDuZFjD_0N?&PuA9msxS`tzT7Bv>HxXl>LKSm|%n!IS)t5)&8 z{?mXDYPr9=F66481!sA#MfM<9J45il8jZp3xSO|gBO`i#1Yu2)=^AM|yh8ph$~Fl$ zFh4))PZKh`rwu5*R|%h_zen}Cp3hk|(5##I{CTyw!kZ$rcIQ3{LFTJ)H|0N#zm+~6 zm)i-%BHAV~k^tZ;eR08^WAi?0yD@CX}t8EXY<*#;ndB^SkAH+GOPCXe4+4UOuC~{Uw2`)%6#f< z#?%y=Q)OR2S1^0uad%cx+fAaPQ?c*yckvhpW9*pQmN!{Cbqx0UoouF>a_>j_9JG1x z`RtZ8sH1m?&qTl)oLE{lC*aO&LRNUi_vD*R!RG?Ki0f??p0=d5Fm{_b$d)yG#d0@C zN$E$+EVpShzKiWAmT6xBQoiUK^wgpwEY-HZd*XP0Omsa){#_6NZkb{K8X86n*+|I! ze1M*ulXuBt@A?zgz6N6SDwW7!TO}G9_hS)DBrN-$jMV;mZAcc~k8k3M2&4XJWz@#g z@wf2SkAu(;EFyV(I<@oJD*H)=(qtd7e@=-#FaDv8Nv$`dyA4DR7*8d{al1y*p+s$8 zs|k{4U3J{6>SGPY(l$G2zy84YaqM(TLz*R{sT`Ym91E8c_rtn8OLd?*)cJ+248f;^ zlpgys;{?3UE4Cb8XM{zD*VboSdo78_m9!p zL2c%QcipU6bX{#GAtmpZt*?H&hASK#H~DHCt*fN!qF=2cattmGEOjwH2yiqfze#9Q z^N*8J@d{uoG<7HGVmmLMJS%mb1@l+Ql`(qX4Fb>u+kD7|=XCZ@~K=H%(y}R3GeyTTX$#Jj?Bl1w%o3ID{dG(Y`eSKl~;a< zi7IPY=GadK>^LJg3>F|7=yiYjuQ{cfnnHEq^Khnb06XTa2bnx#ee2%u{wmQ`nWCL~ zR?+I*yqRK1a@jSv-E^~4m{WkRwqNTAsL2i_y?S2uWMV>QIn z;X9885nKB;30$Q&9E@+68w+Kj2A}OuM|zV=xd?!8?JOWHb~p zJYec9Yb{!YHWi~2T8&uh+m9;T`mj}tRO9+@KaYp_w`DHwt`8_=(;5cLD!cH)wpq%8 zsgE;VM)fytw^D64WVd@%BgCPOTzPqbu8gyP^{0#@F}TbZd3YLEgTZ*iX}{+v>9aQd zuFtbp6Nb2~Hcq+QPA6@)$G@&G;p{L(fHbp>m`GILL+PUIof}*v(S=5W(4>J#=WivV z6+QG02aNWPND(`vAdkR=p(oujw}+O^-U>;fM?(M72gZpQAX9~|ui!C!fi3iYJ4Hhd z1=I7rh86$F38wF{f;iyrQy=3@|0S*62{#L5a zh{9}d4z7kp=K@((g7hI~-ellQYz-EQ`KiAN(YQV~WoOXQxXmS)WJs@LI4^{U%WQ6t zXJ}Pk&h?$odaMW@Vn`Go!>&5?#O7TL+i*YV_Uf#}Yb-#l9s`3e{O`K}22k%46x{0} zCJ1I0>PhF(xYhf2Zx-NT#(}imKAR_n@0w3fYxn%RU}hO7#O+pkAQFD~9EE$(i2)KxGl7@m3JKRf&Ehoq*hDS9lAj^(jaSHge($Ss`D zy}Mqych?6E8V;e9W+~%HVyxa z%>NZmePKf{GmlRtk*iB~H6u~Fg2Yew^F4Pp2?CeK)7Oao4?|Al18(v%fJeOlYB#@m z&*+H8qi<+3YFC07p@qdHE?egK`0K7;x~7tChh6yE`08UdvOnqmGA%&sl3Yfsqo3LuLisfKiU0W3s2`?x$EmKve0}+7S@j**)#~k&YV6KF z$%7`TobbIZiVl=~I+_cqv{J%c>CxJ(WuPv19gfERkIQIMPGOR|+RmE_!lBdiwSokr zsfa=ypS$tRJo>XKw6Kh__^Uv~P^%$RG%mx5?r14i`=@@PKIu8#mh%u->R)mebX@&$ z`WM@WV8RuRYf+JlZGUA(8=Am-ZVVmT>e8g|Z%zu;gy)#sP;1d#7Lb3kcyx5tM;{>J zce`uKLxWKHc^)G$O36bqT(gVT5K199#N1HldTn(G%k5c309SS-GAF>l8I9bADMyPE zXu&jDnB$**can3TzX*y&E}>Of<~bVlT&L7T>PqkTTMi07sf)4So)${0%^10;JaeoIDq<9;3q7l<} z^}A#TJ#Fg5lBX{Mb^2%<=rLNn=_Xya z9r#tG-CylipjGXBvC`Q1Kau7i`PILwuNhs$$x-nGqgvnN8%FCB^h31HvJ82W|HVn0 z0hUzN42O0v6&V~*3@>YJ@aXPe>1&`c*@&joXscCpq0-bP&whd_p;mU#a~yi#1mW2? zA>csQqaF&1l^H$r*wYC`da~k3t86bzvEM~`^Seo04IzN1!Quc{Lk|J8a3@!LzOe^} z?R3}w{$4_U-$*$`jy4yrOKvmY(99!o_GiJPmFj>v00sZ6t(e2l=Ftj%>RYObft?3> zfca=3bZdoEi@91e);4{81I_$vVj2KjY}uZ zLnpgvCC?)TDjJi%_pPGNZ5n1%g4e{s4js@!Fhx#u4aO8jv*r+Ry%4F%x!=57ZuVp? zrJdKJ<#_Pf)ZnuUqojtv!f8y|K+|h0F?zWD5h0Zh%qhDgcK?giawqEB67JLB1zIO_ zcNr>7OiIR5-J20D@U;! zGbp>T-E3uwf%6%AdHwwRu(WUPt!R0y!C(fO7g_c+AF>2&PN|ER0f&aI#LoxRLT#`c zrlqhyG$O*G8gQMMT*atr=vT>*?K9zC&{1d*BB3`%m$7X(>6RIe=j5n z|2T@zL|t~DuP@il^xtTcm!g7)4SC@jnAc>5wriZ}mcXt>VA1XI*loc5MSy%eH@GQV zliITX^X~$5pW*&DTAx3gWJX0;(Z26$l3OAY-+L)YSViYGATZ1;*S2&DyQKG>_HroA z3o-l9jK$ho>^VMH#pN)0jYbJ$2|+>JQyomfSY$s#&S}n<$(3nM$8GAPS@ZZa9XsRW z)^qgL+7pk?hZK)*byhVL8~%C-QIp&ziECg-t=@4A+73m(&&D5<*J4NibY=RObg<;2 zhu89Cv+|qB?UTRi$u&GrgOK*Oy2Md;Ze4O0~}wLv`ZNtD;}Hvj=@`yWGk!d_S-u`>NwBZjcILO6!{4h79N->ur#_d%h|| zbK_Ad+O_t)her_em`p$alctWlp>XCZE-Ln*qC>}J-nS{qGVANQgD2X`n24dN$&hzS zGsIHVB=aK^tu*AD+*0v5DP9F8A>Dh_=S$@cVz< zdq*dbJ2}Iu!CE?C6dOS%(lA;}Z!()np27BQ#>}lGZ}c~@IQ<{USxfxQ2@N<969HwQ@;N@k@~*S9}Y1;bFxjZ)0rbjO&Rx7<<_4* znil&wc9%N&Kv%HvEamDrfVDy~?0Z}61Qt-aRqrWvvJ^N-(BmZF?0mt2;-0>u^;p>; z;Px!~o)AiyN66s)h=B5?-JnM(#R+iQRaSw3?;VAvY&S?w>o_18i?p^D=*Q}fx;+T! z_?GA7lj(70`w7$`axeMK=l=8LLHi6}yqCh0POJ% zZZjr%!Rf8W1al$fY5Q*TKL6E&JjGKq|1Rw(C#vjUG8jvgo}aY}nY{D7s98_(yOW={ z{?p0iFLjfD*RhF8BigKX81fPp$uTh@&ke`<@iaxGu!@3E+G)qk`coaT|JJoy@l3f_ z%WsQfNWJZQ?~u*5^r?hv_1_*?Q@cd|?j==frmvH1xonk3s*I8`McUU%E+*6!3nqHLnenB80;WIW74He?47eD?s2UZm}T;>)dY&CV5Lz-(< z*z8KkXUAL-B(7d(M@!+271Unkj_ern<(gZ`vw~XlV~zsgqR86pagy*u3qhKciKCsp znlWxD&x6=%fP%zHK*)F=OWdNS!7xmVgq>M22f)lk^wR6ytn#tafHq4&Efc|!&zu~) zbYWO^>uJDFLA0e?B z%L7-}O|R{J!tsKuJAHgOA<+k?e4t79 z{$}gOvHL+5V+|v)(i!=2fXhdDdcopWf9fjQ_od6H*i<4=U4NtPE&B24MJ=~a!xDPD zHRz}E6v!~^DuMQ1A1%z$oca}5(*tBR_Yvv%SzX$+lg(G$1g2m$I+xd;%3xGNa@DI$ z#SAa_@u^J>F)BxF9@M3tvL?-#Ow+8@=yuq&TW`_efoSAU?bX{JZQTAc zBoFpMca=t3rJR{}!|$HE21q-IuySAsr9RByQHXDrNXhDKHdlyW7V?ax4ist^iKXk& z(-ulyI)q;NUMnk*k!f)h%x&dZEIz&$nSvgCLTGy3Ec7S2#|?ic0$@{!7rvnGt5*7! z95PK99s$Kh9{sdYW=nrD>L+Rb6C*q)KQilWi&EK_ImvtJ$@e{twXioa)_i50v~T0% z?9`DfsaiU!y#fZ+)pZ`guS}y;eo9{wu^)HF=G*8?ew4|v0VBn7+q05Mhk=rUg=QO; zOt2Rb47o#c4PtDu2l|yM;$xc)jIT_Yx3pQk;^u(3bIr1SishY|>sncPa&M*zA^Zb; zuL}%A9WHM;hUiMAkY+7Tps7Ud=2DWcTmx-9DrvLT%1}?evRgH~xm&hVYLbOj(%J5m zB@eCpXfrHd%#7J;1lzf|r0@^6%HI|gF)9&HovDF(hOxW33CIA@bm zVDCFIYvjLe4&_W^Z;E(7(lnlAgkh3?W8oiqDyHWTdb!L-_M$h3Wy#t(R*=!)C9r)? zDY^eOUAnFFkli2el2d!-A@12s6W-|t?mJ&-i6M21t+9xlUZ-~=ox!PGPl8r3B~q$WuNK~T3Hu=+p6OzX_57-B@j6o@tC}kEu?k!@xp&2oZGu`X$D(dgsNP1qXUYlrvkm>&tsIT(E737ZZ{OW zAXFv?c9VUyR6s=5N-8cT_VI539GOCLCqii-NR)Hwc4#+rk5$HyFZME#Qh-1f7CCQ@~rjk0d7tH?^h( zUGwIB1Mal#6l55FS{w4fJ~ zj20za3O%6|=BmYfF$Vs36NoAa|HGt|%`4+ifr+c!?#4i-#moU+rWJy91yupj+%TG& zY08PtV$C1*;jeV(!!4(OgPwZI(L-9G0es$H1&nC3kes>cp4+K5we3SkbY>o6F5qo=NJ#UZtnCFy3LN zaFh%0mVOFHF*K~~xH`(kwCpaGTh*Z4>OWah|*hVvQN z96N?BVd$ocLieSOaQ4-7WE)eDyv?%1Tn+60RJtzqg%i;l7!|Vf89X|^jgL|{#MIQT zHl6t+iVhv(%q8`G%mN+2&iWWNpdB1RO{9dH$%;}oHT&tjIRVqX3btbiOEpDk#b6W6i<+(r8dQ@U!JBI%Nvnb%aISzeJ}r`ML9j>(ODBK%x-$! zODP(Ij3(P>F9Z4HVkmQ2>!6t-?vgf9T0LU0RcgYrm#W}lsz{ByPGP@y-_FeoQeIlK z$rv$L!tmy`oWgmS5`*x-*tbjS#9?W$*9V_Jb-JKB6gq8-?reEN|B00)_X(5}cIu@4 z+^8n=tntO+YsmY)pN^nkKU12Xyp#eFeh{vUY1P(Zg5@3(d4QRq6%gU`XpAjZnUmaq zUMEeX!9-`iRwER=j5;qQJCz7q(fdCNN#pkfSci6FHjKe9E?Z6~Rid9tj0s$6@ZKU9km0a(TfI#L%DY%#L0?K`sW$i-M?vhYYiP5Hhn&Hy# zZ?-tYUUOkncq8(YG6ngvq>x^lD-%&8OSm5EHQVdMKO?Mp} zGhhm*bdJuR0@%k;W1o03>2t{`ky=6zBDKmSPxKB=s>T`WJtwv}AJ zRP^Ts86Ag3)`Ej^TgT%cb*k(#aT!YBg9>9VR89C2O|v5*9chC22D)C;_Gp90Wy4vj zq7OJQQ1}k^<8YqGcZka)6Re0A9fR-xnqT%Zjz-5Hw#M;mInnd>brZgFF2FnihBrfS zvkA`Z6FHlxf$%hL;>1_npZKdMzUD2~j{3Hz`an_}SmuXDLa5w?)3F9#jVz?hco_WK z1oN_Ex|-y>Rn1eb#Ub&7$R}wAD;(H7<#w67lK-64BwD>~OHJZcR#)dKrQ?X__q_YH zi{0mv*6QrsRg;*~&u2yp;WQCq>(GEam|`r*)NlFl{Jh~ z$EEURReuZRFH-)-HLJIH9Ax*i7u0y>9IT%M6RNXYPJ+_$cQqO)H9UKY|F33b5S@JB z)87eEYDN^wysDCZ2JZ}(DsXq2md>rKpS1Av+c97vg4Dac7BPmV|>{6p*Ma8 z>Yy>vta$Xn4hi#3zUh*NGoKkIG*6k$geo1N^ABADzdCekke?SX)!Z+=mUXc)dmR7b zj=M?8Rbk<85}#?}?8;_ochOC%!E6#~XuqN7#KhQuw)SIO&Sm{YxqQ^l_(4M#2iK8l0JbI(VN?{FVYNIyz^(TrJ)j~(m@r^ie|QeL*6O1^y@ zX^=%dbj|3j`Yshit1eONc@!4ypKYk30Tw&aFQ({?Kb~&Fkb(SHKms#gx9kp574y>N z!j%>xbk}gEiJVJOww(vwxj{hR8&zX|$){;@-a zge`R7m-a>ynr*Kz4wycNWK7!F&Vnv_ynEYT>pXeFjw`aCHy%&zi2j&^90}ekDzh5w(=)e6=2XA;rXXOE5_12#H&c_~I zn@!E+;Xj@~?c#M!3cKDMpB?(azBH9T*-%j1TI}a{75X#E*`1jpn0u3vQrvk((#bTR zhkwroYj5ydioyHEaVo;6rG;c~`x+maXueNy<)5Nb{8EDVW|TKRe4??Yju}^#7Q0nL z_*~2*4ADqgP->!B+nfF8r=~%hl!SKQoX4U*M=*7N`jLmzzYF!7lp$GVS08)3A@{|X z77#C6V~a6gyzYNaYAAgfK`Tgm1?va@TQ7bo7QKo8=X?Ke)y2D^DU|N@4|ErLZ2MQq zOah&|L3SLrH%XAL_vC;l_y0Cg|8x0Y2krjdt@uCBSN>0R{--+s4Rq)?AO0^s*7E=R fp$8q|-bh2-$k%$A4y4hi)iGYkt3%6W-vs|J&mj+j literal 15144 zcmdseWmJ^y*YCiPQW6r93Zf|89fAS^f}%9ipmcW(D1w3@pfE@pfJk?jbgLjCEiuyF z_3rtf_k27b&ZqOPGi&)EGR)lfwfFwjp68X;ePyx>moFd?2r^X_rH2RvE(-qMOGE(w zz45N85`n<4_I;%1{?N>e&Dqt-`kB2Io4b#*6`Pg!GiwCG`%j9FUHsZtvXlOs#dtrE zO|E!Um>%-t6B@^T4KGX|2Sd%+9wF|RZ?Wlfa_8dntd$>@ZhR6wTB-XR%N57O`Z>^O z-)|;uBaKz#^KgI8??dUdoJfk2v5h>7b~}x!F}bPUAa#!QC5M3Z1N*E^i%-#3x2Etn zCgxI}*0a9(d6M-0m`P`Ts^Qdly7r2v_F{AC&OfF1iLs2-si*mE`z9klbv8NbMgO&n zHE7n9jAs{0)~f}`_`aky@PxpIHE(y#Rpnbj{;g)tB-F0(tPBu31`B#W1%qNGgZJ?u0#FyZ-O`%1wWW*_$kXZLLqu2Z>1An1uiN9Cp}&8~8J0o?s01 zGoXo-yVP5vDyqVS>8!R9&)!iFIpVVFGIQMdEc#foGn9I?=JtcFD&ND_7D^lNOAc2cOoQYie6UQsetW#=ZN&scN6om zo(nfuekm{XSoJ-{2CwUT$|wBUEM>D*nx3q#-!%Ah1q~hFCF-T<@_lBE#FVF-+(m>x zmG>oLze7385*6uNO`LemX_zi)tM{MW0*a;=nONYM+Ei|vKIrs%Q7Gl%ys*9lk2(!| zmM?Q8`Hw1l53#R9ufBh>qjMV+?5azj2{lvrJ}y<}@iv-CMdg-ptPdvzzGnT7Jt>1( zmd9`$VdAI3-h_VS&$)l&Dmxo*C7O7yP6(xczTRt_HBa?-k=-xHP|GHIXOKbvN;nD6 z#a?LvL-$$rYhkl*CYo!=yxsj%GR8%h?q2gAiMpC8LXcObGUtx^d%+|ZnHl9!7*gno z7&Wk=&-q>KZSFe%k0%l(3MfE!Qmw)mZ2uk@+SKWhOw-XN}h3h#qy?mc@>%Q{ZS@? zFrJn6+tF~1@J|_-7=f3!CE4lRO%!vZ*V+~3X%YA&rTwmxm!2fl#S}_Y^3Xh$8q}(f zzTbvsq87SN{iS5Xj*_e6)qK>vQ4_66&(EO?#SGniBRUo@ej6?ARgog-X@2RXp~9%L zXGX954329fLQIz$D6djWeY~Ui@}rhY=q#1kGA9RpJBm%|g?kDSUTZtC(wgsnCjSlM zDwI}c;$wqHqFYS*Y@CE17o})ltB)(H)pYuMHL8dXQW?LfCD82ERJN`8t0#;Tc{|X0 z-g(Y?5I6joc2#?J2=gLW%)))IGVE1-5{dH>p1ufxmHqyo1>nEy~>l9OP^{PJ0Pb5 zx>>x^I;)l8Tws*>!$VwwKrq;5V)fZK%oL1@Xxy^s7q z-7W7Z?J0pZ!+4&^XQIw@pTYiCrz5?KF6I3y)Zl4u|5Z2j^}n; z^$`&~{D~~X5ePPfs*=JZ@8s19AAj}zv-Ztl4i)ZeMDNpE>b2GExy-rh_CA$JEIB`;^}arKLvkKbu64bwi(ulp+V$UGuNFODd2igijTuG3nhWh+pYg(bzU z-sUh>XrRYNc4{6K{{Q6Bky2viiO(@1P5w^P>hzlFfJ}bGEitwk(fv-ccURn&d9Gf) z>N>@U!$hFNaV&O)difD9+K2GC4#BOCsm5OMH8pEp`Cl45(~8rdd-B60Jmq_sS1=Uz z|NUdjs6UG5zS7Uh1DL+1-PLzA<@v!lg2RN1n^(Nj7!-_@=lC&UaL&Z(cOX>Ad_eZ~ zpKH&4aA0FZqwbKWGD=nFaJkWEn&}6!1IM3W1$kE9#rzF%j*P-#)hkGvS_+MTD;OWf z4cTw`&01{dDoGfkiSRU~-6-ppQ|6~7YQa4(j-SG-FMSe*n`Tkmlo8yGy1v0xNb(g& znt&T2sek;g70)l)ETlmL%_cH9pwd*;P2Lvzn* z2_+G$!3et=B)Z2$NZq9M@z7BkzeamhHQcU>q~A1dBkGFZB*ERP+{eTeISTqkc2{o-QW`%g|AIzR^Z98t#eraRXd)2v+kx5%9KDrktFj_SsU#d20)`%4P zy}WGt_peq}n0nA6Ry_+?O~y)J1ut}U*iK$E40`nD@i!s;2}2{Gw)fdk}?*GK2C z!oxe7IoQ1W%Z{3AyktczheuE!{XPtO`)NnHi?6t*W5~KFVn>4d$>Q>Ek(ROvG!ydU z(Z3`fj3qSFG{-H|K<6@}t;g)pfiFxyxNDjn9oOA4r{0lMk<3u@P;XE~EpqG;mg-~Z zy`S4rQc}j$>@->-SltCu6I`8GjJNMeviu?&(BzAH_gp^S?1OF{f1)gZVjW521NDV| zMxoG1W^ZEZ!7>6-4yhrQbl#1iM!q4*Aa!f!OpkmqlrHKPn#=UHLAzn_;{LvXHKHr0 zu_4c*2Ps>$_ssJ5dfr$)3AW$6g(-KQ^GR8^INFMu3A&c4+V=(EQd{zr#FOACpqp5y zkTwDgjos+!zAJRrg?D8VcBhaHxW@v$wcV(O+~TY9%IZ_i&ON5lbO}pdC9lDw13g3?e6H#k+(k+x>b;c-yP7KRrz|T{hkI6R6`(wZ(AZ{{M$P zVvb+=S?f;IzC+%`X&pF7pcco+Ll8HHGBR~DKSc=Rf79!3|CODpiLgR_ebiNKxGRNY zq-Jscvhf-lXUfv-Tk5aTRej5g{wsc02s6*xRZk}$6H250`RQjL4{D?P``-hCK!Z&j z5fn~MPx;%`JT+}3i_*S$K)pR*Iq4ffruUlo$C?g*;e?fs^pA00d{eBRz+KNu3Q*be2Tr)9&NC@%Iktd5D`joC`Y> zb&!=Jc#$P4bv~mX>v#K+dPr_B2^#@Z_Gzb-V}W$)jpt<=l+zM+r?jS&oHxE#N7?Xe zaGFdvof{Ki9886ns@Pw!;0)=P&*h{Pt@ASle%PJ{THj&#%)sMWP- zUJ;|(ahCa;ycBZmUwND`piTK%sPS+tTm7w#kdp}l!7S*NnLE=q%Of*r#OP-8H(_U* z?I%%4QT^Q>yY~$d#Czn17?aRLCSmnigJsjnoW;gt^uFyS(~>S`jYbWD(S`wZe>B~+ z%|sTNj`2{OF#8!_4`xAoSvIxRKOUG!aAE=vmD(62FiI!2(7o=K-bS`}D8@qD2F9l9dhYMnF$f_2^0?-mDpoMiDUEDdl)nZKxdC-a7wja^_km3ct8?jm(h ze52**W&QJS`ojaH12mKLaXj`<-xHdKJRWviZ?V*4_H>!uugZqj94ad(yq{TA_grd0 z*8bXJfOB5Abx(9`zknQDAYt{?T;s$oA~d)0a06Zgn8e^$}7 zMPq5U!`9>aBF!xqGztJpfId$D^2^13@rwhNiAI6y0}fI>r945gM}tDy6NHSJs;5k^ zPAQr!2OSsOi|0$w2;u9TmG-X}oiMh#m)kEi<5eCCtRH*#V6I=>X8$Y9spl$8?bT}O zXUyDWiDXWTk?ibhHhz+|Cu^he*-=Pff58OZZ%3<+`jf(_c^XTyedutvD{|j)xj|82 zv=76dwyvj6y>StQ*vIX!cqn}SfK-DR;Tm`5xH8{M1Nw4hd_Vcs_c$WT)-S7TZC>Df zY7l2uR__sQfgAD)ZFee`>Ej}+O31;1>0qjh>{ODVX}A1qk7jcb=Oo%`-udaa)9=Ro z6esgpsU)Yx z$C^}0rP^+k+oNX`oX=OMm$!~wmi1UoL#9&E)BDPf0c=s>;nHj@?>VPGqkASeV)s~k zq8Do_$l{9bY0z^XQ=2lglk2@<7%2=dZRja57v$Ujeve8>B#VDHWN?{Q^DpAnDte*a zjN^>n8+YK*0Tt);0m(np_jmL#u02g?qX+5@l`3`;e4L-(>D;|lb>56OUr?R997J-A zZ+4^_!jL^dPJQx6VE+@}D#TI#Wymd zJo@&H`$~TQX%n$~g51{sJSSR`O>kn_E8%ypN2N*qW#}hfs8}`d{Fs`y7kfmv=WsOqL zSETG2lm(jnNhYLcPVp*nW(%Dze#jI)DqxJaWg7TMJkV0yvI(zBcBn|_?Lp#ZNq$g7 z_uhQ&cGhp@O@W@1SRa0z>2;34z_j9}6|`6J)djaAO6ng~7Hf89>OUH!M*}vB^2eyR z4_)#Su=@M|_QByYC3C^?{OlBec6Qcn++U5dlT^RNy6)k(N7-?S#uOm^+_Gh)#I%hY z0s~$rB^lQA`g*bR%x!oikL|8a zB*Aat^4s(=S@(YM7{;VZdGU(a4Ovds`lyCzP{te^KYB!?9L>_ZVjHf)>1T>;e4L~6 zAkRRg+H>`FMTJX zJcw-wy>v@wZrCIUe;Qu0C&dpFFdTF^PuCUCvwWgk@9*-R|(c){f?a^6Q-SK#Ygl?;U%7pu+oF=93y}O~%`uftd$y$jLoBqB+I~qz=iiVRd z5{tITnfU}0>%*;iZj<`tndUI+%a^-s(gGI7*M94oWGKC&LcDnSGP8TCqF?Sj8LD>? ze%{U3&~voA%pmSOZOp2xwAP1|BKiX7l>4OaLwY*f1v*}Jc&G4aX4Y_$98 zpG&B{)iG)snwI*2;~U1+?rl#B!#kJ_peH<*2Cv+>(NUG}JoBAN+WYO{HfEs0$pit7 ztqi5Fg1(~THJV=fox>#K`|ft=g_*TA^2TiKEa=U%C~~dwSuHl3>?tv|L|b ziqvSCoo?)Io!`DS)TM78I=9HW_i{XsVOy=wHuee)D;$j~or6b4^a#i;kcDuzAG z(c!T%P54k*DSkgqw)X`wHJab-c5Jaxm1{9yH3y}85f(P(e4eXc5_?UJ76yEz#>*)-C`ruee$gpRC${?+|CHSdINtL( zBOxbWfQjnMwg$KngDTD(uQ%8%4Q3x4AD6(qJPA7WxGZAZ;?!{JIdBRnC3kkfK2hW4 zbympx@C(uEScRtGKVFgcDCSw1Yo$APT(;&^c}?nj08e5`WhrC))`NQy@q8w!1r28( z8XM(n>*`XLhjaCx*VIU5+HW>e-g~1q z>wjM>%{fXJGBj39`bI##0a)%e1fJ4My5BfI8g8KHH$|Kt?S6)V;o9TUN=L-R#E@PV z4hM705FD9=#2KUF4CHbC+@0oheWZ<@z*>wkwXsti1pwCZ|i)`-G+^zBh+Rm!r` z4;VT&Ny!f#9V&lkXR{5;Zkm~yooqBytW4G=og8ip0ls1O$OQxhgdNAxfFYR%37i@q zeiWF!$r>9K`C|G)?o1QQJ&Y=U2k=`BD#tu+g;L)pR1DO*W z;{iuIF88lcv$FO_F-v_lsw(~vbVqO$$&7d%-qCw_cv$4V`0)Gp?;}-i*8!2f_xDEw zfIcj{&f4^#Hkwc4N!dL@MC#pT>dXo}>6CdUqRXyt0 z|D;5WISC*MWg*>8{5A}1Uh7TKv--H)oAlgb^&+PtO$+5x1he0OcDS^R+H0iv%MM{{8_(q!C5 zL-*aK#|EWO6~f4wv9th1`Ur|>@rdLj=nwm;dYOr+>+n>T%=;<#U}!fsHqy;oUq>>E z@fsV30dyY%fDNpAySmxR)!czLPZoCxfzy;^HQQOrDG)SoA+qjIP2t6iz#vvLDJv;) z)SXP7pR%skZj-w$^n8RDT^X;6bDXG-5wf`t6rI3}p%;F75&CM;mAgu$3o-fW#S1*Z zICXdTQnv|!J)iAfv6OlCyOHStI5b=jU*I4KoLB#dAh4?B?G?q21U^gM+>4rF141Yk0OX;TRPqZ}PFIXO9la{JECxa&B2)$UxszdddST8Fy0Og9Gmd60l5 zrYr@XSQ^SxgAVIV6uN$PcBY;xEul)_yuHv%$|U|4n%;A5e9=hG<*(A&e#5x{P%%~! zM9ZE1<5p8qG3`MMU{SR>j6#agI9b{!mYAAz17NiT-~+Q~)0aGRx<7?^ulvMoZMbG*jpyoDoxIDy9hrc~SoXvoD$oLg-)GBGr{GC13=jwz1R*(->Gv1J2&`Io zPDoK4c|u$u29PZREo4Iu#AbeWa@g}hB;s#t#P!3B?O$qq531dt`3D3n zj#mi*iQ$<76}hiZ%5+u*o*mkJ5Po(WE*&TCS+bzjYazYyYL8nVKYm24{3%n@2Mf{3 z55Q^)Wj;7M67*crgBKzuCB>p2B9cMqWsybu*53%eEqEIN=V^J_qkrs}Gmrz8H{PgJ!5Zac|CZzyxAZMtl zsAAWi3$R{;KKS`7Lv6G^Kq^BmArtuNMQG^eazVq^kf9SLU??17ctixdpkOSp%+^A$ z8tB#JV?Q4s36uSQKc9nuhzGdDwggOn!kp31pFih1ls-WzPq zFUgt*283pvU}-8H3v|V0Psmao@sjk*=Bc1_4bbK(-C$WV;18A^;EP26gMueA7iexY z!Y~RQEU`YhjOQAG(PK{o|mBR;Wh`L3K zf?+E5Sk}Q5CnV5mN^j!v7?yJY%zJsPM9}eVjaWoaI9vj)J2;>z*Gs}zD-Uym5W-CV z_^6l-qiA}@8wedK4axw)Bo{b7O30!jsIUu9Y=qHD6tSZPo2RyU`u@5m3puOoicwT# zq$OOBw~xT0w3AIyYd zM{e=KotWca5q$OkdWJv}Klpr?48)rIa0xS$xHC%b{6r|lmaF0uuqf6~6x1I9D-xZZ zY-@sqkcWoB`S&Y>1bf8?o3qJMUQw7-zbL2rL(bn8&@Is*M_*E~rYpMlnYYUfw9P=9fhQ$DWd&D;>aohX9YNfTJe|o8TJBl6vD~63(==2{vdi z0qlb;jlkA5=sXZ)u70s4v8L=H2LgMXfY?1rV$opMHld;tLCk;{ysbUQAf>Z_DhG4* z2dW%bMvC6?8egWMpul2k#Z+K7xby>HEv&jgfc~4QS+B=V7y#Y?)X>kJP_X}P)sMp5 z6q}ohsVnGA&5rndh}a^`yxv^-zIcl+vyDJDl3*>p|i z?(Cgx_gj>Vq6Muktk)m&0>Weg!q@H&86qO-1ww#Wagj(DH@DB=PN1YTC?Mc0m4~%k zUAKTRew9Ac##94r#ekno_5Mqosh;@#RzdA|tgUI6J8K$qYIqYCMmQCC%+u7=1T2Lc z6chv+js`Iqdc4-RI#IK)oIar;rhez+?a-YYmG0$GD=I1~!7_5b0Ea9~h49xeQNP5I zO@K0%2cM^Xcm65FT)pEBsYJ^1Rd#kR<7(lVnHgwB0T2>EQQ1aSf-tsMI5=L=J@F0( zLIGSl1Sm!j5fjfe1|tF65<#(o!0N(k(aAa~IBbraH(vuJyKGD=0KVJ?m-6&SIu7VV zux?lm})76g{wATD5F3GY8Rl^)Q|JgeuPAiuSTF3uT#_E65->s(|#;haMLbb8{nX!MEK z+S3Y6SDunldt;OyLW+1Qm%-!;P5RkejL?XJ&MPV@$holoAXxs*Ox zSohnWcsS*!qJfp@`2EVURlmTX27eCu=IM#n0tJ`$Kz%mB--0zVqH239eu1p3bYwp^ zR*Cq`EvS{>`1szUvO!L9n$x1ESHO7dI#s32k~W?Reqw9M0k+1lzKgo%MD z{r&yL-4;k8+rzei@UvepK+zT1{=O-Dyds2ER-pUh@KC^)pW!IydJ?IfoSe4iI-9|q z`&_-!e>$K8KJ z{1jxTeOU%WrML&jiTl?UY`_2U3fv?0cxSb_LwZfr^P`)EX8+USVmkqW<)Tq(9IE0G z_GBy1vGw6XR(I~}d^L_GDTQ$x;_|p_F;T_KYvs?&Uo78BInFRx&>`9=t;(2qAhau3 zLs$9Ut-&#xpd7bybhUN0QpD9hMkjH?kyp!fqA3xodeyQX>+M<= zIw=w~sWT66zLcn8kd4f&x!k=R`x%{l&tl&g?s4<$+%C0LvN{$j_R^I#O&Vx~_mNEYo{Z&R!|J?i@N1VZAYeUEK4P34iZ#`} zL|&%$#lEdt_nS^$m)!ZY`kdv#Y{k!a-#~mQ3}eP|<;s;itTaiz3#3Cvgs;V|t2B9K zWmE6IxeOyqf{|>WB?vw?f2*nE)!|evYF;sxFE02HF|_<|aId6mD8sl)ja5$jdqV_w`55 zvd)bsh;Ot-52`QH?1gZzWiv}y_(ODq_12J&{)Ditwzl?$Zax#rE!Hm#Kw@@zSKAmZsuCc6bUh%idm!)R6p-gdanuXM>kq`W?qG z+(zM+_VyB&*}LFSu{H=0r01P4Wb39CV_XkD;W3KZrvuPNj}Km1_v)&(&Y80v&hG`h z@m|bGH~@wG6>J1Z-vyA*z`pP?FCqwl?(8o8mH@d6rq*Mv2Fx(zn*?Y?|4;766^_Ob z@AQIX!9jzP1CfQv&PuJ`r@KKBn(N4ah(9Jnw&(aoJ{T7p;Xuao3Wjq4LOxL4%l<9b z(9dKb*L)6vAgmoaDKa6K$db$n0ig*gRR$apA{p|j&J#C=6cNon_J}uIvRadb)dyqY zHSs<|^x@-?nZc@nk+*IF==?c%28I)tBVp>lpt&bc-At!|n zBxR9CfBkwRHDFI4b|lTLK_?3K_T12=pTP3GyZQJv>_&>sTQ7i^=|~GYOPup5WMN?e zmJ5Ru82}Ff;q-Ad;fT)z5)t7-mQs+>=(96%+QJXX?Fn1t^F7Q+D4P|SG zVQ*`CdRj_yE#J6?rE_{!LCocE3k~}l85tRUa0>~%#<)FCn?csOL3k;9Fpa!G%T0u? ze;#yxDh3M+$et(whs`Z4aQ;D><*__;&1te0#5{JTft9ODPg=3mZ_v?H-~2@u5IS7+lUyrQHAhFurESaSb2U=?~cn zthf3ZPH?36Ml8TGcaQSfP1Ofr#~DnKR-vf^HbVf}kKJGVcM=0yngUW#ENQ{}+y!$~ z>AiW?;ZLdA-YBU&4A<>0{dC4A^yqE?}xx9mSIKh{mu7Z z)?*YQtV?ER2<8|N#s;m2f2>QOli$!B+r|6&XjScXyMc4WYL&iuNP7pWJ(g+4KvYM7 zoD%&#D+&_@_a~kZM#i|{j~ka$x|dKY5$F$r@$ag95P8@TWn;tnn{GiLI0y(ytYCn! z)4n!Q1I1&3MCG5qc{>CQSXEl*yL*+BvrQss4Sa(dgrnH)3H%Hqc>(_eXKc&?mR>yY zL>ySwRdg|Hz9&%#dvQv4?^4mz{~Hfn{FQ;tM6RjDYvt(V`H3R_DP(X?Tb4Ub-3P1t zFt^}g#s$E>7RQQ#atA|fiNRHXPh<6lNO-jL8MSV~lWUN8FZ3o+Gc#)d9xzCI^FMj= zL_J0FJ!p1HTG}>PhUnLN3xMRGhmd#yEG4$g&?C-AJJ0@y6e86Vra{?<;IzLZ3{Alcp| zF&nU=uuXKH@45u1)nQjq*9Lcujdifu4Fu$ty&o>YV7V^zbiz{UzNIAx_zqa+1zwSr zos?kK0z3hF?Q;}(CJ}Td4ePQQpp(+4KSMO-P6s7i{o%~83$~hxHG7AcQZ6J~{r2te zWK!ho6Ez7?qhAdTiLX9B%(w>$!7IS07_3LY#lNsI?$(d9kYH;NeY~}`^|zJI1aG=- ze-dkYV5^3Yf=1s01ytlPR{m(8jD)0lcsK$64&RHecuK*J6YDGx(lAsEl8f1pllb?g z$|PCm5Te%`07j`UU4r135Nk95Z?QQvNCK<_fx|8uwZ|@*K`q2ec{zek=!f(k_790A zax(ypE?!<3?3I9c?#ny|^MzFtSd(naY~6!asB)c89y>lh)&@|-?7<0p-RI#D%S7-e zf;}mMrlnaP&No)`_7(?!-QL}Ot8~7sl#_WP=<6;R< z5p$a4_&jQKM_GAxZ7tQZ`UN=dnZ?D$aa{=fJYgm147QkNSu;g46xIunFgnZT4`NeV zU|=n{I8e07Q*R_7J8;8YgCtm@=Fzn@@(##OVK0{{G0hH~4{dkdr`8st1__TP8fT}h zGoK&X#Nvt2gQ;-)*!2XadU?2D8?r3yE)JG;st{wxE|Q2k{Ba*pz6DEr;pa_)R$YZY z+t!#Zu&pW4jB0kr;8$Uf)Csn;7dR?BDoSS>!fCHuxMyy?Lbg`zu$N?vZ4KwA>onT? zD4&HAi>oJw0lWovw+y!|+FDyFnVDCmtzF^i8Blw;ql=W3O%Pc1!r{P*A1Ai&+9Xdkz4a3?LXtm84bo9$;(m zzmkqNED^&Z89pSA?Ny7tl~Js1hvb49s2-a*LRN>(JZ|aas(7$P-+~weqNn6JpH6b< zL`z`AT*HbeG@2gTDXO6%=r!dW*4>&y3XyA66$?k%7R{=urS(H5ZF|!!T`K-H@L>s9 z6U>)7Sf-f+`t@0lQOF*k1T5N|VeJCGuNx@5Get@a{68lLM~e^B@H`;R=G6IFLOY9J zALvQ0B~cznFQn3eVm*6cSQeQktJN(81cHK=(_%X0x; zAB;^zpt*aJCE`GuV8utd>cAa}>D@$?gX@PKRKUz`*jBV#wbmSgq*-Y~sW#Gg+cvtz*@KJnbI z(NDNkg;gN;L~1Y3-I9i2vDNE#ZUT90_mV@{jiRIw)8VD=PhR=P0@LpJg0& iA@~2;Blh(<;kRljqqqznUHG4-5UO|XE9Kud4f!u6B8pT1 diff --git a/kubernetes/app-tls.adoc b/kubernetes/app-tls.adoc index e685acf..90c9fea 100644 --- a/kubernetes/app-tls.adoc +++ b/kubernetes/app-tls.adoc @@ -2,9 +2,9 @@ [id=tls-router-app] = Understanding TLS traffic between applications and routers -This section covers traffic between a client and the router in a site, and then between the router and the server in a different site. +This section covers traffic between an application client and the router in a site, and then between the router and an application server in a different site. -If you need information about TLS traffic between sites or traffic between {skupper-name} components within a site, see xref:understanding-tls[]. +NOTE: If you need information about TLS traffic between sites or traffic between {skupper-name} components within a site, see xref:understanding-tls[]. Consider the following scenarios: @@ -14,11 +14,11 @@ image::../images/app-traffic.png[Three different network routing configurations * An HTTP application that receives requests from a client in a remote site. The connection between the client and the router and the connection between the remote router and the server are unencrypted. -The +The communication between routers is always encrypted. * An HTTPS application where the traffic is encrypted by the client and unencrypted by the remote server. -* An HTTP application where traffic is encrypted at every stage: between the client and the router, between the routers, and between the router and the server at the remote site. +* An HTTPS application where traffic is encrypted at every stage: between the client and the router, between the routers, and between the router and the server at the remote site. This section describes that third scenario, and the Secrets required to have TLS between the application and the router. diff --git a/kubernetes/con-tls.adoc b/kubernetes/con-tls.adoc index c09947a..ce26612 100644 --- a/kubernetes/con-tls.adoc +++ b/kubernetes/con-tls.adoc @@ -4,6 +4,7 @@ include::../partials/attributes.adoc[] = Understanding TLS certificates for Kubernetes sites The traffic between sites is encrypted using mutual TLS providing secure communication between Kubernetes clusters. +If your organization mandates the use of custom certificates for traffic, you must familiarize yourself with how {skupper-name} leverages Kubernetes secrets to enable encryption. If you do not provide certificates as described in this section, certificates are generated to create the mutual TLS connection. The traffic between {skupper-name} components within a site is also encrypted using mutual TLS. @@ -30,8 +31,9 @@ This section describes the Kubernetes Secrets involved for various scenarios so By default, {skupper-name} creates Secrets to support TLS for the following traffic: xref:tls-between-sites[]:: Traffic flowing between routers, including between routers in different sites. +Communication between routers is always encrypted, including routers in different sites. -xref:tls-within-site[]:: Traffic flowing between a router and the service controller. +xref:tls-within-site[]:: Traffic flowing between all {skupper-name} components within a site, for example, between a router and the service controller. When running in Kubernetes, {skupper-name} expects specific Secrets that support TLS for each of the above scenarios in each namespace where it is installed. These Secrets, which contain TLS keys and certificates for each of the scenarios above, are assigned predefined names. @@ -69,7 +71,7 @@ NOTE: {skupper-name} only uses the `skupper-site-ca` Secret if `skupper-site-ser [id="tls-within-site"] == Mutual TLS within a site -Within a {skupper-name} site, the service controller pod needs to connect to the skupper router. +Within a {skupper-name} site, components need to communicate, for example, the service controller needs to connect to the skupper router. This connection is secured using mutual TLS, and the required keys and certificates are stored in specific Secrets, all sharing the prefix *skupper-local-*: `skupper-local-client`:: Contains the key and certificate for the service controller, along with a list of trusted certificates used for verifying peer certificates. From 4b62b007e7c429f4651bdaec65966859cdd80a20 Mon Sep 17 00:00:00 2001 From: Paul Wright Date: Mon, 11 Nov 2024 19:09:15 +0000 Subject: [PATCH 11/12] updates --- images/app-traffic.png | Bin 43217 -> 18772 bytes images/tls-traffic.png | Bin 17518 -> 32322 bytes kubernetes/app-tls.adoc | 3 ++- kubernetes/con-tls.adoc | 53 ++++++++++++++++++++++------------------ 4 files changed, 31 insertions(+), 25 deletions(-) diff --git a/images/app-traffic.png b/images/app-traffic.png index ebf406fd1815eebf3fb28176ff2e50d82fbd67bc..080b66c91a6ef5ad346afc5f8b18796d6e7d6db7 100644 GIT binary patch literal 18772 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 NC#@t^Bw^_PKLDTx<(L2f literal 43217 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

b}J8Y&n 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 diff --git a/images/tls-traffic.png b/images/tls-traffic.png index ea76e391d956d9d75f5edf45c7185b762b198633..6f2182018a563f813d121790664e605dff038621 100644 GIT binary patch literal 32322 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 diff --git a/kubernetes/app-tls.adoc b/kubernetes/app-tls.adoc index 90c9fea..bf48514 100644 --- a/kubernetes/app-tls.adoc +++ b/kubernetes/app-tls.adoc @@ -9,6 +9,7 @@ NOTE: If you need information about TLS traffic between sites or traffic between Consider the following scenarios: // https://docs.google.com/drawings/d/1o5af8M4alYq206SawaFpFoLnr_8QXxbC40hSRNnBW1w/edit +.Application traffic between clients and routers, and between routers and servers image::../images/app-traffic.png[Three different network routing configurations between a client, router(s), and server with varying types of encrypted and unencrypted connections represented by dashed and solid arrows.] @@ -18,7 +19,7 @@ The communication between routers is always encrypted. * An HTTPS application where the traffic is encrypted by the client and unencrypted by the remote server. -* An HTTPS application where traffic is encrypted at every stage: between the client and the router, between the routers, and between the router and the server at the remote site. +* An HTTPS application where traffic is encrypted at every stage: encrypted between the client and the router, re-encrypted between the routers, and re-encrypted between the router and the server at the remote site. This section describes that third scenario, and the Secrets required to have TLS between the application and the router. diff --git a/kubernetes/con-tls.adoc b/kubernetes/con-tls.adoc index ce26612..671d706 100644 --- a/kubernetes/con-tls.adoc +++ b/kubernetes/con-tls.adoc @@ -3,13 +3,14 @@ include::../partials/attributes.adoc[] [id="understanding-tls"] = Understanding TLS certificates for Kubernetes sites -The traffic between sites is encrypted using mutual TLS providing secure communication between Kubernetes clusters. -If your organization mandates the use of custom certificates for traffic, you must familiarize yourself with how {skupper-name} leverages Kubernetes secrets to enable encryption. -If you do not provide certificates as described in this section, certificates are generated to create the mutual TLS connection. +Traffic between sites is encrypted using mutual TLS providing secure communication between Kubernetes clusters. The traffic between {skupper-name} components within a site is also encrypted using mutual TLS. +If you do not provide certificates, certificates are generated to create the mutual TLS connection and are stored in Kubernetes Secrets. +This section describes various traffic flows and how the certificates are generated and stored, allowing you to supply certificates for various scenarios as required. // https://docs.google.com/drawings/d/1o5af8M4alYq206SawaFpFoLnr_8QXxbC40hSRNnBW1w/edit -image::../images/tls-traffic.png[Encrypted traffic internally for two sites and between those sites] +.Traffic between two sites and traffic within a site +image::../images/tls-traffic.png[Traffic between two sites and traffic within a site] NOTE: This section describes traffic between sites and traffic between {skupper-name} components within a site. In addition, the xref:tls-router-app[] section describes TLS traffic between a client and the router in a site, and then between the router and the server in a different site. @@ -19,7 +20,7 @@ In TLS, two key checks occur during the handshake establishing the connection: Trust of the peer’s certificate:: The certificate must be validated against a list of trusted Certificate Authorities (CAs). If the certificate is signed by a trusted CA and the certificate chain is valid, the peer’s certificate is trusted. -Identity match:: The peer’s identity (for example, domain name) must match the Common Name (CN) or Subject Alternative Names (SANs) in the certificate. +Server identity match:: The hostname or IP address used by the client to connect to the server must match the Common Name (CN) or Subject Alternative Names (SANs) in the certificate supplied by the server. If there is a mismatch, the connection is considered insecure. Both conditions must be met for the connection to be established. @@ -57,7 +58,8 @@ TIP: See your provider documentation for generating certificates. For example, l When two sites are linked, the routers communicate using mutual TLS and the required keys and certificates are stored in specific Secrets: `skupper-site-server`:: Contains the key, certificate, and the CA certificate used by the `skupper-router` when accepting links from other sites. -``:: Contains the key, certificate, and the CA certificate used by the `skupper-router` when creating links to other sites. +``:: Contains the key, certificate, and the CA certificate used by the `skupper-router` when creating links to other sites. +The name of the Secret is the same as the link name. To establish a link, both routers must verify the peer's certificate was signed by a trusted CA. @@ -71,7 +73,7 @@ NOTE: {skupper-name} only uses the `skupper-site-ca` Secret if `skupper-site-ser [id="tls-within-site"] == Mutual TLS within a site -Within a {skupper-name} site, components need to communicate, for example, the service controller needs to connect to the skupper router. +The {skupper-name} components within a site need to communicate. For example, the service controller needs to connect to the Skupper router. This connection is secured using mutual TLS, and the required keys and certificates are stored in specific Secrets, all sharing the prefix *skupper-local-*: `skupper-local-client`:: Contains the key and certificate for the service controller, along with a list of trusted certificates used for verifying peer certificates. @@ -91,24 +93,11 @@ include::app-tls.adoc[leveloffset=0] | Scenario | Secret Name | Notes -| Mutual TLS within a site -| `skupper-local-ca` -| Certificate authority for signing `skupper-local-client` and `skupper-local-server` Secrets. -Created by default. Not used if user provides other Secrets. - -| -| `skupper-local-client` -| The key and certificate for the service controller. - -| -| `skupper-local-server` -| The key and certificate for the router. - - | Mutual TLS between {skupper-name} sites | `skupper-site-ca` | Certificate authority for signing certificates in `skupper-site-server` and client certificates for links. -Created by default. Not used if user provides other Secrets. +Created by default. +Not used if user provides other Secrets. | | `skupper-site-server` @@ -118,12 +107,28 @@ Created by default. Not used if user provides other Secrets. | | `` | The key and certificate for securing outgoing links to other sites. -Labeled with `skupper.io/type=connection-token` +Named using link name and labeled with `skupper.io/type=connection-token`. + +| Mutual TLS within a site +| `skupper-local-ca` +| Certificate authority for signing `skupper-local-client` and `skupper-local-server` Secrets. +Created by default. +Not used if user provides other Secrets. + +| +| `skupper-local-client` +| The key and certificate for the service controller. + +| +| `skupper-local-server` +| The key and certificate for the router. + | TLS between {skupper-name} Router and Applications | `skupper-service-ca` | Certificate authority for signing `skupper-service-client`. -Created by default. Not used if user provides `skupper-service-client` Secret. +Created by default. +Not used if user provides `skupper-service-client` Secret. | From 21ea891a58345775c38080bf5599344062befdc0 Mon Sep 17 00:00:00 2001 From: Paul Wright Date: Wed, 8 Jan 2025 12:15:06 +0000 Subject: [PATCH 12/12] update diagrams --- images/app-traffic.png | Bin 18772 -> 30419 bytes images/app-traffic.svg | 373 +++++++++++++++++++++ images/tls-traffic.png | Bin 32322 -> 67217 bytes images/tls-traffic.svg | 722 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 1095 insertions(+) create mode 100644 images/app-traffic.svg create mode 100644 images/tls-traffic.svg diff --git a/images/app-traffic.png b/images/app-traffic.png index 080b66c91a6ef5ad346afc5f8b18796d6e7d6db7..27864da50f20e37e381dc9dec106ea829fcc6b64 100644 GIT binary patch literal 30419 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

V$lXWA#{8PjXkf*otZHo~0}lMrhnF#V&g$Uc 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 literal 18772 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 NC#@t^Bw^_PKLDTx<(L2f diff --git a/images/app-traffic.svg b/images/app-traffic.svg new file mode 100644 index 0000000..56f80a3 --- /dev/null +++ b/images/app-traffic.svg @@ -0,0 +1,373 @@ + + + +EncryptedTerminationSite ASite BRouterTLS between sitesRouterSite ARouterServiceControllerTLS within sites diff --git a/images/tls-traffic.png b/images/tls-traffic.png index 6f2182018a563f813d121790664e605dff038621..987435fb518acc84bf735ee3e9add46f59277398 100644 GIT binary patch literal 67217 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�GfhZNmbv*)NMR#^<6I5hyhh-Q)8x`DIB{5alBijsp>{?;nuZaGS7wCX_l^#; z9x&ZZINI2^-Hiv|@y%?XFN0%|*v?fzm;TAORM!8yAiB_x6Wep zNr$MLEJw`PCEhSuo_{hA{qByI7R434%xLu}X6unk=fQ>$Wz#B`n3-64T2R(oLSe*i z$D3`&L-XM*7C8H?AX2EkqoY}!#k`MPlq@q~?Yh%oG4Iqh__LAKn*)XB?mg-(Z^5x% zRC|GY(0O-Gp(9zm?W^CG+xN@KlZp3q9Scx|)ziqx3O=NGrxABkOH1p`JfLKE3=G2F z2piiR?{6;r&SzO`I14U!9$|)lf{7i6Av_*0bi~ZUGV`2H3HQk`U&3?Y&i2aC)~kw; z&Q$69)lckV>`?fWr|vVYQ`PgCYAfI%(UWBI2H>pxL-nK8MJc&w2b14 z8cx{=E4eY%41@MYJ?KEogrsO73Op!be0{C|vl(G`ARO)~FWho%^Nl_?k#Pq? zRUl(u%75&F-^hOdp2YR*CTV|>W!!RMtyqny zwDg7NWOPaetDhtFDc{|U`Lr7-!TRmP-FL--2Tz

Nz`-M4PYAr}vVJo>%3dSh}zw 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 l)V=l_cKnB(gJ)!kNw^~Vn4rD+B?>@Bobj_n-~* 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 + + +EncryptedNot encryptedTerminationSite ASite BRouterClientHTTP ApplicationServerRouterSite ASite BRouterClientHTTPS Application with end-to-end encryptionServerRouterSite ASite BRouterClientHTTPS Application with hop-by-hop encryptionServerRouter