这不是仅限于您的情况的问题。
最近 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-client
2.0.5 将使用POST-as-GET
,这应该可以解决此问题。
合并请求 3782显示 GitLab Omnibus 的下一个版本 12.6 将使用 acme-client 2.0.5。
这将被反向移植到 12.2.x 到 12.5.x 的下一个版本中
当前的解决方法,由 Ahmed Mo7eb :: أحمد محب 提出:
- 从 ssl 文件夹中删除旧证书
- “手动”安装 Cerbot (#
sudo certbot certonly -a manual
) &
(您必须使端口 80 和 443 在防火墙中可用)
- 按顺序写下你的域名
- 转到:
/var/opt/gitlab/nginx/www/.well-known/acme-challenge/
“使用出现的名称创建文件”
- 按回车
- 恭喜!
2020 年 1 月更新:这应该适用于 GitLab 12.6.2。
不需要再打补丁certificated.rb
了。
Mohammad Saberi在评论中补充道(1 月 15 日,一个多月后):
最后,我可以在 Gitlab 12.6.4 上激活 LetsEncrypt SSL,但禁用certificate.rb
.