git - gitlab让加密http_authorization错误
问题描述
我最近在我的 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 吗?
解决方案
这不是仅限于您的情况的问题。
最近 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
.
推荐阅读
- django - /optin/amend-user-optins/1/“u'form-0-id'”处的 MultiValueDictKeyError
- javascript - 使用异步方法测试 React 组件
- sockets - winsock - 提供了无效参数(绑定时)
- python - python motor create_index在过期时间后不删除原始
- python - skimage - ImportError:DLL加载失败:找不到指定的模块
- ruby-on-rails - VueJS 中 Rails 主动存储博客的路径
- c# - 在 ASP.NET MVC 中的下拉列表上触发 jQuery 更改事件并将参数传递给 url 操作
- javascript - 使用 e.preventDefault 反应 handleSubmit(使用 axios.post)仍然刷新
- c# - c# 使用 LINQ 将具有 List 字段的对象转换为 List
- javascript - 如何在 javascript 中验证希腊字符?