4

我最近在我的 Ubuntu 服务器上安装了 Gitlab CE。我想要运行 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

我已经阅读了很多页面来找到解决方案,但没有一个是没有用的。你能帮我在这个 Gitlab 实例上激活 SSL 吗?

4

3 回答 3

9

这不是仅限于您的情况的问题。

最近 2019gitlab-org/gitlab年 12 月的第 38255 期(现在的gitlab-org/omnibus-gitlab第 4900 期)描述了同样的问题,对很多人来说。

对于可能面临同样问题的其他人,您应该注释掉 @Azylog 提到的所有块,包括 acme_certificate 'staging' 和 end 行

但这严重不符合 Let's Encrypt 公告。如果在 2020 年 11 月 1 日之前没有将方法更改为 POST-as-GET,则连生产证书都不会颁发,这种变通方法也没有任何用处。

这与ACME v2 - Scheduled deprecation of unauthenticated resource GETs相关,从昨天开始生效。

12 月 4 日之后,HTTP GET对 ACME v2 资源 URL 的未经身份验证的请求将返回 HTTP 状态代码 405“<code>method not allowed”和包含类型为“<code>urn:ietf:params:acme:error:malformed”的 JSON 问题的正文”。

POST-as-GET通过来自创建帐户以外的帐户的签名进行身份验证的请求将返回 HTTP 状态代码 403“禁止”和包含类型为“<code>urn:ietf:params:acme:error:unauthorized”的 JSON 问题的正文。

注意:unixcharles/acme-client2.0.5 将使用POST-as-GET,这应该可以解决此问题。
合并请求 3782显示 GitLab Omnibus 的下一个版本 12.6 将使用 acme-client 2.0.5。
这将被反向移植到 12.2.x 到 12.5.x 的下一个版本中


当前的解决方法,由 Ahmed Mo7eb :: أحمد محب 提出

  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 年 1 月更新:这应该适用于 GitLab 12.6.2。
不需要再打补丁certificated.rb了。

Mohammad Saberi在评论中补充道(1 月 15 日,一个多月后):

最后,我可以在 Gitlab 12.6.4 上激活 LetsEncrypt SSL,但禁用certificate.rb.

于 2019-12-09T04:54:49.203 回答
6

gitlab-issues中描述了一种解决方法:

调整

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

并注释掉暂存部分(第 25 到 38 行)。

为我工作(tm)。

于 2019-12-12T11:05:09.273 回答
1

我们面临的问题不同,但错误是相同的。

(在我的情况下,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#note_292031191

于 2020-02-21T09:11:15.150 回答