Не удалось найти решатель для: http-01 при настройке реестра Docker с помощью команды encrypt? - PullRequest
1 голос
/ 31 октября 2019

Я пытался настроить личный реестр, используя официальные документы.

Мой файл docker-compose.yml

version: '3.0'

services:
  my-registry:
    image: registry:latest
    container_name: my-registry
    env_file:
      - registry_config
    volumes:
      - registry:/var/lib/registry
      - ./data/letsencrypt:/etc/letsencrypt
    ports:
      - "443:5000"
    restart: unless-stopped
volumes:
  registry:

Файл Registry_config

REGISTRY_HTTP_ADDR=0.0.0.0:5000
REGISTRY_HTTP_HOST=https://my-domain.com:443
REGISTRY_HTTP_SECRET=my-secret
REGISTRY_HTTP_TLS_LETSENCRYPT_CACHEFILE=/etc/letsencrypt/cache.json
REGISTRY_HTTP_TLS_LETSENCRYPT_EMAIL=my-email@email.com
REGISTRY_HTTP_TLS_LETSENCRYPT_HOSTS=["my-domain.com"]

Я получил ошибку

my-registry    | 2019/10/31 14:36:54 [INFO][my-domain.com] acme: Obtaining bundled SAN certificate
my-registry    | 2019/10/31 14:36:55 [INFO][my-domain.com] acme: Could not find solver for: dns-01
my-registry    | 2019/10/31 14:36:55 [INFO][my-domain.com] acme: Could not find solver for: http-01
my-registry    | 2019/10/31 14:36:55 [INFO][my-domain.com] acme: Could not find solver for: tls-alpn-01

в случае запроса типа https://my-domain.comm/v2/_catalog У меня ошибка:

my-registry |2019/10/31 14:36:55 http: Ошибка квитирования TLS от 184.22.214.103:58383: map [my-domain.com: [my-domain.com] acme: Не удалось определить решатели]

cache.json файл

{
    "Email": "my-email@email.com",
    "Reg": {
        "body": {
            "resource": "reg",
            "id": 11111111,
            "key": {
                "kty": "EC",
                "crv": "P-384",
                "x": "abababab",
                "y": "abababab"
            },
            "contact": [
                "mailto:my-email@email.com"
            ],
            "agreement": "https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf"
        },
        "uri": "https://acme-v01.api.letsencrypt.org/acme/reg/11111111",
        "new_authzr_uri": "https://acme-v01.api.letsencrypt.org/acme/new-authz",
        "terms_of_service": "https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf"
    },
    "Key": "-----BEGIN EC PRIVATE KEY-----\ndfsfdsfqf3242423fwead3d2d\n-----END EC PRIVATE KEY-----\n",
    "Hosts": [
        "my-domain.com"
    ],
    "Certs": null
}

Мне очень странно, что ключ Certs равен нулю

Как правильно настроить реестр Docker с помощью let-encript?

1 Ответ

1 голос
/ 04 ноября 2019

Это похоже на докер / распределение / выпуск 2740 , что относится к выпуску 2545 («letencrypt отключен вызов tls-sni-01. Образ реестра не поддерживает резервные вызовы»")

См. Типы вызовов LetsEncrypt .

Эта проблема была определена в черновых версиях ACME. Он произвел квитирование TLS на порту 443 и отправил определенный заголовок SNI, ища сертификат, который содержит токен. В марте 2019 года будет отключено , поскольку оно недостаточно защищено.

В выпуск 2545 включен обходной путь :

Я наконец остановился на cesanta/docker_auth, что было не так уж плохо для настройки. Это позволяет мне устанавливать роли и права доступа для каждого пользователя / устройства.

Используя эти методы, у меня теперь есть личный реестр докеров, который автоматически защищается с помощью Let's Encrypt. Лучше всего то, что он поддерживается Amazon S3, поэтому я могу уничтожить и заново создать контейнер, не беспокоясь о потере изображений.

...