Настройка TLS

Корпоративные и промежуточные сертификаты могут быть установлены в процессе установки. Для замены сертификатов после завершения установки воспользоваться Инструкцией "Как добавить в кластер промежуточный и ACME сертификаты".

Для установки в развернутый кластер необходимо следовать инструкциям, указанным в п. Настройка TLS.

Корпоративные сертификаты

  1. Создать сертификат:
cat > openssl-san.cnf <<EOF
[req]
default_bits = 2048
prompt = no
default_md = sha256
req_extensions = req_ext
distinguished_name = dn
[ dn ]
C=RU
ST=Moscow
L=Moscow
O=My Company
OU=Department
emailAddress=admin@example.com
CN = example.com
[ req_ext ]
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = *.apps.corp.domain
[ v3_ext ]
authorityKeyIdentifier=keyid,issuer:always
basicConstraints=CA:FALSE
keyUsage=keyEncipherment,dataEncipherment
extendedKeyUsage=serverAuth,clientAuth
subjectAltName=@alt_names
EOF

где corp.domain ‒ Ingress, с которым устанавливаете платформу.

  1. Создать запрос на сертификат (CSR) с использованием файла конфигурации openssl-san.cnf:
openssl req -newkey rsa:2048 -sha256 -days 365 -nodes -keyout tls.key -out tls.csr -extensions req_ext -config openssl-san.cnf
  1. Отправить созданный запрос на сертификат (CSR) на подпись у вашего удостоверяющего центра (Certificate Authority, CA). В результате должен быть получить подписанный сертификат в формате PEM, который необходимо переименовать в "tls.crt".

Также для корректной работы всех компонентов кластера необходимо, чтобы этот сертификат содержал в себе всю цепочку сертификатов: ваш конечный сертификат → промежуточные сертификаты CA → корневой CA.

При установке Комплекса в закрытом контуре при использовании корпоративного зеркала корневой сертификат зеркала должен быть прописан в доверенные на все ВМ и шаблоны.

Промежуточные сертификаты

Если имеется промежуточный сертификат центра сертификации (Intermediate CA), подписанный вашим корпоративным центром сертификации (Certificate Authority, CA), то его можно использовать для автоматической выдачи сертификатов с помощью Cert-manager.

Для этого необходимо создать секрет, содержащий цепочку сертификатов и приватный ключ: tls.crt ‒ это цепочка сертификатов (ваш промежуточный сертификат → сертификат корпоративного центра сертификации) в формате PEM, tls.key ‒ это приватный ключ от вашего промежуточного сертификата.

Сертификаты Let’s Enсrypt

Для создания сертификатов с помощью Let’s Enсrypt необходимо, чтобы ingress-контроллер был доступен из сети Интернет. Для реализации этого требования должно выполняться хотя бы одно из следующих условий:

  • Внешний балансировщик должен иметь белый (публичный) IP-адрес;
  • Должен быть указан белый (публичный) IP-адрес для IngressVIP.

Создание и установка сертификата с помощью Let’s Enсrypt

  1. Создать YAML-файл acme-issuer.yaml с манифестом объекта ClusterIssuer:
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt
namespace: cert-manager
spec:
acme:
server: https://acme-v02.api.letsencrypt.org/directory
email: <ваш email>
privateKeySecretRef:
name: letsencrypt
solvers:
‒ http01:
ingress:
class: nginx
  1. Применить созданный манифест:
kubectl apply -f acme-issuer.yaml
  1. Для присвоения секрета для backend выполнить:
kubectl edit ssc/shturval-backend

В spec.customvalues прописать наименования созданных секретов для backend и auth.

Пример (описание параметров ‒ в таблице 29):

tls:
enabled: true
backend_tls_secretname: <ваше значение параметра>
auth_tls_secretname: <ваше значение параметра>
cluster_issuer_name: <ваше значение параметра>
  1. Для присвоения секрета для frontend выполнить изменения customvalues:
kubectl edit ssc/shturval-frontend

В spec.customvalues прописать наименования созданных секретов для frontend.

Пример customvalues (описание параметров ‒ в таблице 30):

tls:
enabled: true
front_tls_secretname: <ваше значение параметра>
docs_tls_secretname: <ваше значение параметра>
cluster_issuer_name: <ваше значение параметра>
  1. Для подключения дашборда мониторинга со страницы кластера внести изменения в SSC shturval-dashboards выполнить:
kubectl edit ssc/shturval-dashboards

Изменения customvalues (описание параметров ‒ в таблице 31):

grafana.ini:
security:
cookie_secure: true
auth.generic_oauth:
tls_skip_verify_insecure: true
ingress:
annotations:
cert-manager.io/cluster-issuer: <ваше значение параметра>
tls:
‒ hosts:
‒ <ваше значение параметра>
secretName: <ваше значение параметра>
  1. Для подключения интерфейса журналирования (OpenSearch.Kibana), доступного со страницы кластера, внести изменения в SSC shturval-logs-operator:
kubectl edit ssc/shturval-logs-operator

Изменения customvalues (описания парамтеров ‒ в таблице 32):

ingress:
cluster:
annotations:
cert-manager.io/cluster-issuer:  <ваше значение параметра>
tls: []
‒ secretName:  <ваше значение параметра>
hosts:
‒  <ваше значение параметра>
dashboards:
annotations:
cert-manager.io/cluster-issuer:  <ваше значение параметра>
tls: []
‒ secretName:  <ваше значение параметра>
hosts:
‒  <ваше значение параметра>