#655: Как установить свои SSL/TLS сертификаты для веб-интерфейса Swarmica?

Отредактирована: 461 день назад

Симптомы

Как установить собственные SSL сертификаты вместо Let's Encrypt?

Решение

Подготовьте файлы сертификатов

Чтобы установить собственные сертификаты, вам понадобится получить архив с сертификатами и ключами от авторизованного провайдера SSL сертификатов.

Обычно архив содержит несколько файлов:

yourdomain.tld.crt - сертификат для вашего адреса

yourdomain.tld.key - ключ, который использовался для создания сертификата

Скопируйте файлы yourdomain.tld.crt и yourdomain.tld.key в папку certs.

Установка сертификатов

  1. Отредактируйте файл /root/swarmica/traefik.yml, чтобы получилось так (заменяя строки yourdomain.tld.* на названия ваших файлов):
    tls:
      certificates:
        - certFile: "/etc/traefik/certs/yourdomain.tld.crt"
          keyFile: "/etc/traefik/certs/yourdomain.tld.key"
          stores:
            - default
      stores:
        default:
          defaultCertificate:
            certFile: "/etc/traefik/certs/yourdomain.tld.crt"
            keyFile: "/etc/traefik/certs/yourdomain.tld.key"
      options:
        default:
          minVersion: VersionTLS12
          cipherSuites:
           # Recommended ciphers for TLSv1.2
           - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
           - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
           - TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305
           # Recommended ciphers for TLSv1.3
           - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
           - TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
           - TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305
        tlsv13only:
          minVersion: VersionTLS13
    
  2. Создайте резервную копию файла /root/swarmica/docker-compose.yml:
    cp /root/swarmica/docker-compose.yml{,.backup}
    
  3. Отредактируйте файл /root/swarmica/docker-compose.yml для сервиса traefik:
      traefik:
        image: traefik:latest
        restart: always
        depends_on:
          - django
        volumes:
          - ./certs:/etc/traefik/certs:ro
          - ./traefik.yml:/etc/traefik/dynamic.yml:ro
          - traefik_data:/letsencrypt:z
          - /var/run/docker.sock:/var/run/docker.sock:ro
        command:
          - "--providers.docker=true"
          - "--providers.docker.exposedbydefault=false"
          - "--providers.file=true"
          - "--providers.file.filename=/etc/traefik/dynamic.yml"
          - "--log.level=INFO"
          - "--entrypoints.web.address=:80"
          - "--entrypoints.web.http.redirections.entrypoint.to=web-secure"
          - "--entrypoints.web-secure.address=:443"
          - "--api.dashboard=false"
        ports:
          - "0.0.0.0:80:80"
          - "0.0.0.0:443:443"
    
  4. Замените строчки в /root/swarmica/docker-compose.yml где содержится tls.certresolver=letsencrypt, чтобы они заканчивались на tls.options=default
  5. Перезагрузите Swarmica:
    docker compose down
    docker compose up -d