не может подтвердить сертификат дляпотому что он не содержит IP-адресов SAN - PullRequest
0 голосов
/ 11 февраля 2019

Я работаю над конвейером GitLab CI, который развернет мой док-стек.Я пытаюсь установить для $ DOCKER_HOST значение tcp://DROPLET_IP:2377, но получаю сообщение об ошибке, в котором говорится, что мой сертификат не содержит IP-адресов SAN.Я тестирую с помощью Digital Ocean Droplet, поэтому я еще не установил доменное имя для моей капли.

deploy:
  stage: deploy
  image: docker:stable
  services:
    - docker:dind
  variables:
    DOCKER_HOST: "tcp://$DROPLET_IP:2377"
    DOCKER_TLS_VERIFY: 1
  before_script:
    - mkdir -p ~/.docker
    - echo "$TLS_CA_CERT" > ~/.docker/ca.pem
    - echo "$TLS_CERT" > ~/.docker/cert.pem
    - echo "$TLS_KEY" > ~/.docker/key.pem
  script:
    - docker login -u gitlab-ci-token -p "$CI_JOB_TOKEN" "$CI_REGISTRY"
    - docker info
    - docker stack deploy --with-registry-auth --compose-file=docker-stack.yml mystack

Вот ошибка, которую я получаю в выводе моего задания CI GitLab:

$ docker login -u gitlab-ci-token -p "$CI_JOB_TOKEN" "$CI_REGISTRY"
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
error during connect: Post https://<ip-address>:2377/v1.39/auth: x509: cannot validate certificate for <ip-address> because it doesn't contain any IP SANs

Я использую следующий набор команд для генерации моих сертификатов (ca.pem, server-cert.pem и server-key.pem), которые я пытаюсь использовать на этапе deploy, описанном выше.Я сохранил TLS_CA_CERT, TLS_CERT и TLS_KEY в переменных, которые используются в GitLab CI.

openssl genrsa -aes256 -out ca-key.pem 4096

openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem

openssl genrsa -out server-key.pem 4096

openssl req -subj "/CN=<ip-address>" -sha256 -new -key server-key.pem -out server.csr

echo subjectAltName = IP:<ip-address> >> extfile.cnf

echo extendedKeyUsage = serverAuth >> extfile.cnf

openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem \
  -CAcreateserial -out server-cert.pem -extfile extfile.cnf

1 Ответ

0 голосов
/ 11 февраля 2019

Я вижу, вы включили IP-адрес в subjectAltName

echo subjectAltName = IP:<ip-address> >> extfile.cnf

Проверка, , как здесь , если это проблема конфигурации:

Я поставил subjectAltName не в том разделе.Метод работы: В основном я отредактировал openssl.cnf, в разделе [v3_ca] я добавил 'subjectAltName = IP: 192.168.2.107'.
Создан новый сертификат и добавлен на сервер + клиент.

Youнеобходимо убедиться, что ваше расширение объявлено в части v3_ca, как показано здесь .

...