用于存储库克隆的 Gitlab HTTPS URI 不起作用-无法验证 SSL 主机-致命:无法访问

用于存储库克隆的 Gitlab HTTPS URI 不起作用-无法验证 SSL 主机-致命:无法访问

当我制作 Eclipse -> 文件 -> 导入 -> 项目 -> 来自 Git 的项目 -> 克隆 URI -> 从 Gitlab 输入存储库 HTTPS URI 时,出现错误:

可能的原因:
URL 不正确
没有网络连接(例如错误的代理设置)
无法验证 SSL 主机(在 Git 配置中设置 http.sslVerify=false)

我已经添加了http.sslVerify falseEclipse 配置,但它仍然不起作用。

如果我git clone https://my.example.com/gitlab/root/repository.git在 cmd 中执行,我会得到:

克隆到‘存储库’...
致命:无法访问'https://my.example.com/gitlab/root/repository.git':请求的 URL 返回错误:500

Gitlab生产日志显示:

由 Projects::GitHttpController#info_refs 处理为 HTML
参数:{“service”=>“git-upload-pack”、“namespace_id”=>“java”、“project_id”=>“project.git”}
在 102 毫秒内完成 500 内部服务器错误(ActiveRecord:2.5 毫秒)
JWT::DecodeError(Nil JSON web 令牌):
lib/gitlab/workhorse.rb:120:在'verify_api_request!'
app/controllers/projects/git_http_client_controller.rb:154:在'verify_workhorse_api!'
lib/gitlab/request_profiler/middleware.rb:15:在'call'lib
/gitlab/middleware/go.rb:16:在`call'中

SSH URL 运行良好。Gitlab 与 Apache2 和 HTTPS 一起使用。/etc/gitlab/gitlab.rb包含:

外部网址'https://my.example.com/gitlab'
web_server['username'] = 'apache' #'gitlab-www'
web_server['group'] = 'apache' #'gitlab-www'
nginx['enable'] = false
unicorn['listen'] = '127.0.0.1'
unicorn['port'] = 9099

/etc/apache2/apache2.conf包含:

ProxyPass /gitlabhttp://127.0.0.1:9099/gitlab
ProxyPassReverse /gitlabhttp://127.0.0.1:9099/gitlab
RequestHeader 添加 X-Forwarded-Proto https

使用的版本:

GitLab 8.14.5
GitLab Shell 4.0.3
GitLab Workhorse 1.1.1
GitLab API v3
Git 2.7.4

有关于类似问题的文章修复 GitLab 上通过 HTTPS 克隆的问题但修改/etc/gitlab/gitlab.rbgitlab-workhorse 配置没有帮助。

类似问题: 使用 HTTP(S) 和 Apache 作为反向代理的 git 操作出现错误 500

如何解决这个问题呢?

答案1

在 9191 端口上启用 gitlab-workhorse:

外部网址'https://my.example.com/gitlab

gitlab_workhorse['enable'] = true
gitlab_workhorse['listen_network'] = “tcp”
gitlab_workhorse['listen_addr'] = “127.0.0.1:9191”

独角兽['listen'] = '127.0.0.1'
独角兽['port'] = 9099

web_server['external_users'] = ['www-data']
web_server['username'] = 'apache' #'gitlab-www'
web_server['group'] = 'apache' #'gitlab-www'

nginx['enable'] = false

这就是整个 gitlab.rb 配置,其他行都已注释。

并将其proxyPass放入/etc/apache2/apache2.conf在 9191 端口而不是 Unicorn 上运行的 gitlab-workhorse 中:

ProxyPass /gitlabhttp://127.0.0.1:9191/gitlab
RequestHeader 添加 X-Forwarded-Proto "https"
RequestHeader 设置 X-Forwarded-Ssl

相关内容