gitlab letsencrypt ошибка http_authorization

Недавно я установил Gitlab CE на свой сервер Ubuntu. Моим желаемым доменом для запуска Gitlab является https://git.mydomain.com/ (это пример URL-адреса), поэтому я предпочел использовать Lets Encrypt для включения SSL на сервере. В конце установки я получил такую ​​ошибку:

Running handlers:
There was an error running gitlab-ctl reconfigure:

letsencrypt_certificate[git.mydomain.com] (letsencrypt::http_authorization line 5) had an error: Acme::Client::Error::Malformed: acme_certificate[staging] (/opt/gitlab/embedded/cookbooks/cache/cookbooks/letsencrypt/resources/certificate.rb line 25) had an error: Acme::Client::Error::Malformed: Method not allowed

Я прочитал много страниц, чтобы найти решение, но ни одна из них не оказалась бесполезной. Не могли бы вы помочь мне активировать SSL на этом экземпляре Gitlab?

3 ответа

Решение

Это не проблема, которая ограничивается вашим случаем.

Недавний декабрь 2019 г. gitlab-org/gitlabвыпуск 38255 (сейчас gitlab-org/omnibus-gitlabПроблема 4900 описывает ту же проблему для многих людей.

Для других, кто может столкнуться с той же проблемой, вы должны закомментировать весь блок, упомянутый @Azylog, включая acme_certificate 'staging' и конечные строки.

Но это серьезное несоответствие объявлениям Let's Encrypt. Если метод не будет изменен на POST-as-GET до 1 ноября 2020 года, даже производственный сертификат не будет выдан, и этот обходной путь не будет использоваться.

Это связано с ACME v2 - Запланированное прекращение поддержки неаутентифицированных ресурсов GET, активных со вчерашнего дня.

После 4 декабря не аутентифицирован HTTP GET запросы к URL-адресам ресурсов ACME v2 вернут код состояния HTTP 405 “method not allowed"И тело, содержащее проблему JSON с типом"urn:ietf:params:acme:error:malformed".

POST-as-GET запросы, аутентифицированные с помощью подписи из учетной записи, отличной от учетной записи создания, будут возвращать код состояния HTTP 403 "запрещен" и тело, содержащее проблему JSON с типом "urn:ietf:params:acme:error:unauthorized".

Примечание: unixcharles/acme-client 2.0.5 будет использовать POST-as-GET, который должен решить эту проблему. Запрос слияния 3782 показывает следующая версия 12.6 GitLab Омнибус будет использовать Acme-клиент 2.0.5. Это будет перенесено в следующие выпуски с 12.2.x по 12.5.x


Текущий обходной путь, предложенный Ахмедом Мо7ебом:: محمد محب:

  1. удалить старый сертификат из папки ssl
  2. установить Cerbot "вручную" (#sudo certbot certonly -a manual) &
    (Вы должны сделать порты 80 и 443 доступными в брандмауэре)
  3. напишите свое доменное имя по порядку
  4. идти к: /var/opt/gitlab/nginx/www/.well-known/acme-challenge/
    "Создать файл с появившимся названием"
  5. нажмите Ввод
  6. Поздравляю!

Обновление от января 2020 года: это должно работать с GitLab 12.6.2.
Не нужно патчитьcertificated.rb больше.

Mohammad Saberi добавляет в комментарии (15 января, более чем через месяц):

Наконец, я мог активировать LetsEncrypt SSL на Gitlab 12.6.4, но с отключением промежуточной части certificate.rb.

Обходной путь описан в gitlab-issues:

Изменить

/opt/gitlab/embedded/cookbooks/letsencrypt/resources/certificate.rb

и закомментируйте промежуточную часть (строки с 25 по 38).

Работал у меня (тм).

Проблема, с которой мы столкнулись, другая, но ошибка та же.

(В моем случае срок действия сертификата letsencrypt истек, и процесс обновления прерван для GitLab 12.2.5-ee.0.)

Что мы сделали...

  • Обновите Gitlab до последней версии (текущая стабильная версия: 12.7.6-ee.0)
  • Отредактируйте gitlab.rb
  • Удалите старые сертификаты
  • Перенастроить сервер GitLab

Я написал подробные шаги здесь: https://gitlab.com/gitlab-org/omnibus-gitlab/issues/4900

Другие вопросы по тегам