SSL для внешних подключений

Данная инструкция описывает подключение к следующим сервисам:

  • RabbitMQ
  • Redis
  • Postgres
  • Minio
  • InfluxDB

Важно

  1. Убедитесь, что конфигурация-SSL во внешних сервисах настроена на проверку только файла CA.crt.
  2. Если для внешних сервисов используются другие файлы CA.crt, убедитесь, что все они добавлены в связку. Для этого измените или дополните файл:
testit_backend/templates/configmaps/ssl/ca-bundle.yaml
  1. Прежде чем применять изменения, описанные в данной инструкции, убедитесь, что настроены внешние подключения к соответствующим сервисам.

RabbitMQ

  1. Создайте SSL-сертификаты, используя доменное имя (CN) вашего сервера RabbitMQ и файл CA.crt:
  • rabbitmq_key.pem
  • rabbitmq_cert.pem
  • rabbitmq_ca.pem
  1. Перенесите сертификаты в соответствующую папку на вашем сервере RabbitMQ. Например, /etc/certs.
  2. Создайте конфигурационный файл .conf. Например, 20-ssl.conf :
listeners.ssl.default            = 5671
ssl_options.cacertfile           = /etc/certs/rabbitmq_ca.pem
ssl_options.certfile             = /etc/certs/rabbitmq_cert.pem
ssl_options.keyfile              = /etc/certs/rabbitmq_key.pem
ssl_options.verify               = verify_none
ssl_options.fail_if_no_peer_cert = false
  1. Перенесите созданный файл в в соответствующую папку на вашем сервере RabbitMQ. Например, /etc/rabbitmq/conf.d.
  2. Добавьте файл CA.crt в конфигурационную карту ca-bundle:
# testit_backend/templates/configmaps/ssl/ca-bundle.yaml
{{- if .Values.sslEnabled }}
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: "ca-bundle"
  labels:
    app: testit
    content: ssl-ca
data:
  ca.crt: |-
    -----BEGIN CERTIFICATE-----
    contents
    -----END CERTIFICATE-----
{{- end }}
  1. Активируйте SSL для RabbitMQ в файле values-override.yaml. Убедитесь, что включен общий флаг sslEnabled:
sslEnabled: true
rabbitmq:
  enabled: false
  sslEnabled: true

Redis

  1. Создайте SSL-сертификаты, используя доменное имя (CN) вашего сервера Redis и файл CA.crt:
    • ca.crt
    • redis.crt
    • redis.key
  2. Перенесите сертификаты в соответствующую папку на вашем сервере Redis. Например:
    • /tls/ca.crt
    • /tls/redis.crt
    • /tls/redis.key
  3. При запуске сервера Redis убедитесь, что добавлены следующие параметры запуска:
redis-server \
--appendonly yes \
--tls-port 6379 \
--port 0 \
--tls-cert-file /tls/redis.crt \
--tls-key-file /tls/redis.key \
--tls-ca-cert-file /tls/ca.crt \
--tls-auth-clients no
  1. Добавьте файл CA.crt в конфигурационную карту ca-bundle:
# testit_backend/templates/configmaps/ssl/ca-bundle.yaml
{{- if .Values.sslEnabled }}
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: "ca-bundle"
  labels:
    app: testit
    content: ssl-ca
data:
  ca.crt: |-
    -----BEGIN CERTIFICATE-----
    contents
    -----END CERTIFICATE-----
{{- end }}
  1. Enable SSL for redis in values-override.yaml (and make sure that common sslEnabled flag is on):
sslEnabled: true
authCache:
  enabled: false
  sslEnabled: true

PostgreSQL

  1. Создайте SSL-сертификаты, используя доменное имя (CN) вашего сервера Postgres и файл CA.crt:
    • ca.crt
    • server.crt
    • server.key
  2. Перенесите сертификаты в соответствующую папку на вашем сервере Postgres. Например:
    • /var/lib/postgresql/tls/ca.crt
    • /var/lib/postgresql/tls/server.crt
    • /var/lib/postgresql/tls/server.key
  3. При запуске сервера Postgres убедитесь, что расположение сертификатов передано верно:
postgres -c 'max_connections=300' -c 'shared_buffers=256MB' -c 'ssl=on' \
-c 'ssl_ca_file=/var/lib/postgresql/tls/ca.crt' \
-c 'ssl_cert_file=/var/lib/postgresql/tls/server.crt' \
-c 'ssl_key_file=/var/lib/postgresql/tls/server.key'
  1. Добавьте файл CA.crt в конфигурационную карту ca-bundle:
# testit_backend/templates/configmaps/ssl/ca-bundle.yaml
{{- if .Values.sslEnabled }}
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: "ca-bundle"
  labels:
    app: testit
    content: ssl-ca
data:
  ca.crt: |-
    -----BEGIN CERTIFICATE-----
    contents
    -----END CERTIFICATE-----
{{- end }}
  1. Активируйте SSL для Postgres в файле values-override.yaml. Убедитесь, что общий флаг sslEnabled включен:
sslEnabled: true
postgres:
  enabled: false
  sslEnabled: true
  1. В файле values-override.yaml задайте значение переменных для SSL:
general:
  sslConfig:
    POSTGRES_HOST:
    POSTGRES_PORT:
    POSTGRES_USER:
    POSTGRES_PASSWORD:

MinIO

  1. Создайте SSL-сертификаты, используя доменное имя (CN) вашего сервера MinIO и файл CA.crt:
    • ca.crt
    • server-minio.crt
    • server-minio.key
  2. Перенесите сертификаты в соответствующую папку на вашем сервере MinIO. Например:
    • ~/.minio/certs/CAs/ca.crt
    • ~/.minio/certs/server-minio.crt
    • ~/.minio/certs/server-minio.key
  3. Добавьте файл CA.crt в конфигурационную карту ca-bundle:
# testit_backend/templates/configmaps/ssl/ca-bundle.yaml
{{- if .Values.sslEnabled }}
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: "ca-bundle"
  labels:
    app: testit
    content: ssl-ca
data:
  ca.crt: |-
    -----BEGIN CERTIFICATE-----
    contents
    -----END CERTIFICATE-----
{{- end }}
  1. Активируйте SSL для MinIO в файле values-override.yaml. Убедитесь, что общий флаг sslEnabled включен:
sslEnabled: true
minio:
  enabled: false
  sslEnabled: true

InfluxDB

  1. Создайте SSL-сертификаты, используя доменное имя (CN) вашего сервера Influx и файл CA.crt:
    • ca.crt
    • server.crt
    • server.key
  2. Перенесите сертификаты в соответствующую папку на вашем сервере InfluxDB. Например:
    • /var/lib/influxdb/tls/ca.crt
    • /var/lib/influxdb/tls/server.crt
    • /var/lib/influxdb/tls/server.key
  3. Добавьте файл CA.crt в конфигурационную карту ca-bundle:
# testit_backend/templates/configmaps/ssl/ca-bundle.yaml
{{- if .Values.sslEnabled }}
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: "ca-bundle"
  labels:
    app: testit
    content: ssl-ca
data:
  ca.crt: |-
    -----BEGIN CERTIFICATE-----
    contents
    -----END CERTIFICATE-----
{{- end }}
  1. Активируйте SSL для InfluxDB в файле values-override.yaml. Убедитесь, что общий флаг sslEnabled включен:
sslEnabled: true
influxdb:
  enabled: false
  sslEnabled: true
  1. Примените изменения с помощью команды:
cd ~/testit
helm -n <namespace> -f values-override.yaml upgrade testit-backend testit_backend/