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ебом:: محمد محب:
- удалить старый сертификат из папки ssl
- установить Cerbot "вручную" (#
sudo certbot certonly -a manual
) &
(Вы должны сделать порты 80 и 443 доступными в брандмауэре)- напишите свое доменное имя по порядку
- идти к:
/var/opt/gitlab/nginx/www/.well-known/acme-challenge/
"Создать файл с появившимся названием"- нажмите Ввод
- Поздравляю!
Обновление от января 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