# (CA) SSL certificates and overrides Connectivity between the components within the kubernetes cluster and from the browser to Global Controller needs to be secure, and the certificates need to be valid/trusted. In the scenarios where the Client uses self-signed certificates, the certificates need to be valid and trusted. Client should provide the CA SSL certificate so that different components can be (re)configured to trust the issuer of the SSL There are few places which might need to be updated, so components validate the Trust of the SSL certificates via CA certificates. MetalSoft strongly recommend that the certificates are monitored from an external source. ## SSL for the FQDN through which Global Controller (GC) is accessed via browser When the ssl for accessing the FQDN via browser is not by an official/trusted authority, the CA needs to be imported within the Browser or OS of the workstation accessing the hostname. This is accomplished by the worksation's local administrators within the Organization. Once the CA is installed and set as trusted, then any SSL issued by that CA will not be rejected. ## SSL between Global Controller (GC) and Site Controller (SC) Both, GC and SC need to have a copy of the CA SSL certificate: ``` #Ubuntu/debian: cp ca.crt /usr/local/share/ca-certificates/ cp ca.crt /etc/ssl/certs/ update-ca-certificates #RHEL: cp ca.crt /etc/ssl/certs/ cp ca.crt /etc/pki/ca-trust/source/anchors/ update-ca-trust extract ``` **SC containers then need to be restarted, to re-mount the OS-level CA certificates.** ## SSL between Site Controller (SC) and Servers microservice or Image-builder microservice Image-builder microservice manifest `manifests/image-builder-deployment.yaml` needs to be updated to include the CA certificate. (valid also for Auth microservice `manifests/auth-deployment.yaml`) ``` - name: ca-pemstore mountPath: /etc/pki/ca-trust/source/anchors/metalsoft_CA.crt subPath: metalsoft_CA.crt ``` or the application to be instructed to not reject an untrusted certificate. ``` env: - name: NODE_TLS_REJECT_UNAUTHORIZED value: "0" ``` for that to work, a configmap `manifests/configmaps.yaml` needs to be applied, which contains the actual PEM formatted CA SSL certificate: ``` --- apiVersion: v1 kind: ConfigMap metadata: name: ca-pemstore namespace: demo-metalsoft data: metalsoft_CA.crt: | -----BEGIN CERTIFICATE----- MIIEBzCCAu+gAwIBAgIUTObwqnwPcZW4sZ5RvTl++4G/4+EwDQYJKoZIhvcNAQEL BQAwgZIxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJJTDEQMA4GA1UEBwwHQ2hpY2Fn bzEcMBoGA1UECgwTTWV0YWxzb2Z0IENsb3VkIEluYzELMAkGA1UECwwCSVQxFTAT BgNVBAMMDG1ldGFsc29mdC5pbzEiMCAGCSqGSIb3DQEJARYTc3lzb3BzQG1ldGFs c29mdC5pbzAeFw0yMjA1MjEwODEyNDNaFw0yNzA1MjAwODEyNDNaMIGSMQswCQYD VQQGEwJVUzELMAkGA1UECAwCSUwxEDAOBgNVBAcMB0NoaWNhZ28xHDAaBgNVBAoM E01ldGFsc29mdCBDbG91ZCBJbmMxCzAJBgNVBAsMAklUMRUwEwYDVQQDDAxtZXRh bHNvZnQuaW8xIjAgBgkqhkiG9w0BCQEWE3N5c29wc0BtZXRhbHNvZnQuaW8wggEi MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDp42R+t6p23lhjppq83K2b3mbf 2KLIQ5IncUr0vgPp0NtWDbPFfK5HSWy0x62Gtux5SkmPOt3FwS0r1/BqgLrgM5rP ZTPpf/t0jSSh0vnCBP47XmPq4kDNF8rpxCgCoxEH+JWjdnJLBAO72qNdP5h2eAq1 rFuwy71BFAC+qL9o64d/H0IJ4SHj9h1y2gnq7gAyiyLF7kw/PTXD5OA4zonrmBwL JdYmvXxmJjgi4W86X48pCdLowxFk5skZQTGSXZLcoblDXWRSwrc3s65EDhP53FVC qNjD1fxAV6fkLwkp8C0JXqQ+0vn3PBu7BO6MwZE5OgnWjq93FXHULDkpRlbDAgMB AAGjUzBRMB0GA1UdDgQWBBRsQNxcbzofE3L9TIiLqon4J+/ACTAfBgNVHSMEGDAW gBRsQNxcbzofE3L9TIiLqon4J+/ACTAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3 DQEBCwUAA4IBAQAXiLcar3aHHL8el2auZB6BqWUWLmTYUyTC6bizWvn+vhe4bpNC 4lRVrCityEecX2VzbR7WVOa2j5GwStoaJPDFeZf1ESN/HvTl9n4B7eInB7u/qb/g QWsValgGyvfMdk4MDFOTigoEM3XBdXkAq/PwAipr7BpoKDSltArLbG2pxC0A61lo 3/i8Zqf4XhAAHUyS4bx7VmapY6wfE6bBh5ckijrenhsvO5u52oXJWDXo0TJM+x0L pmN4bRq+IcraOaLIwVmon9ggvO4Cjt+V9cF99SHB/jawlflX/XL3DVvapT3sKJYo dvVIE0i3gwt0+qhni75EgUbufGrVlO5aC1BK -----END CERTIFICATE----- ``` ## SSL between Site Controller (SC) and repository microservice if SC is using a local repository with self-signed or custom SSL, SC needs to trust the connection to that repository: so the SC in its OS-level CA certificates should contain that CA certificate. ``` #Ubuntu/debian: cp ca.crt /usr/local/share/ca-certificates/ cp ca.crt /etc/ssl/certs/ update-ca-certificates #RHEL: cp ca.crt /etc/ssl/certs/ cp ca.crt /etc/pki/ca-trust/source/anchors/ update-ca-trust extract ``` **SC containers then need to be restarted, to re-mount the OS-level CA certificates.**