git没有完全使用自签名证书

时间:2013-06-28 04:01:16

标签: ssl gitlab

我使用自签名证书来加密 经过一些工作,https正在为git工作,但git @ xxxxx方式不起作用。这是输出:

Cloning into 'test'...
/usr/lib/ruby/1.9.1/net/http.rb:762:in `initialize': Connection refused - connect(2 (Errno::ECONNREFUSED)
    from /usr/lib/ruby/1.9.1/net/http.rb:762:in `open'
    from /usr/lib/ruby/1.9.1/net/http.rb:762:in `block in connect'
    from /usr/lib/ruby/1.9.1/timeout.rb:54:in `timeout'
    from /usr/lib/ruby/1.9.1/timeout.rb:99:in `timeout'
    from /usr/lib/ruby/1.9.1/net/http.rb:762:in `connect'
    from /usr/lib/ruby/1.9.1/net/http.rb:755:in `do_start'
    from /usr/lib/ruby/1.9.1/net/http.rb:744:in `start'
    from /home/git/gitlab-shell/lib/gitlab_net.rb:56:in `get'
    from /home/git/gitlab-shell/lib/gitlab_net.rb:17:in `allowed?'
    from /home/git/gitlab-shell/lib/gitlab_shell.rb:51:in `validate_access'
    from /home/git/gitlab-shell/lib/gitlab_shell.rb:21:in `exec'
    from /home/git/gitlab-shell/bin/gitlab-shell:16:in `<main>'
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

在我启动自签名证书之前,ssh和http工作正常,所以现在ssh + ssl无法正常工作。 我正在使用nginx,gitlab 5.3,遵循gitlab网站上的安装说明。

我也做了一张支票。

~> sudo -u git -H /home/git/gitlab-shell/bin/check
Check GitLab API access: FAILED. code: 301

Check directories and files: 
    /home/git/repositories: OK
    /home/git/.ssh/authorized_keys: OK

我认为301可能是我的nginx配置中的这一部分:

server {
     listen         80;
     server_name    gitlab.MYDOMAIN.com;
     rewrite        ^ https://$server_name$request_uri? permanent;
}

不知道它是否相关或什么的 感谢。

4 个答案:

答案 0 :(得分:5)

您遇到的问题是当您启用ssl时,您还将http重定向到https。

访问旧http://网址适用于大多数客户端,但gitlab-shell(用作gitlab服务器上登录过程的一部分)不会遵循3xx重定向,而是返回错误,从而禁用基于ssh的访问。

修复方法是修改/home/git/gitlab-shell/config.yml并将http://中的gitlab_url:替换为https://

如果您使用的是自签名证书,则可能还必须在self_signed_cert: true下设置http_settings:

答案 1 :(得分:3)

对于gitlab 6.0这解决了我的错误:如果使用自签名证书,请确保在gitlab-shell / config.yml中你的gitlab_url是https:// ...而不是http:// ...你指定self_signed_cert:true

答案 2 :(得分:2)

ssh + ssl?

但是从客户的角度看这两者并不相关(除非你想做某种ssh tunneling through NGiNX

ssh连接将与ssh守护程序(不需要任何证书)通信,并且需要将正确的ssh公钥注册到服务器帐户~/.ssh/authorized_keys(当用户注册时由GitLab完成)在他/她的个人资料页面中说公钥。)

gitlab-shell/bin/check错误是另一个问题,与ssh问题无关 gitlab-shell试图通过https API联系本地gitlab 在本地解决,并且客户端的任何连接(https或ssh)都将成功。

请特别检查issues 3892,看看是否需要将CA添加到NGiNX提供的.crt文件中。

LJ Vankuiken添加in the comments

  

如果gitlab服务器提供的证书链无法通过gitlab-shell完全验证,则需要将自签名标志设置为“true”。
  通过将签名机构的证书添加到系统证书存储区,我能够将自签名标志设置为“false”。

答案 3 :(得分:0)

如果有人得到类似的东西是值得的,我在端口8080上运行Gitlab,并且因为gitlab-shell / config.yml中的gitlab_url没有指向端口8080,它失败并出现重定向错误(我的服务器运行在80开始了。)

总而言之,如果您通过http://gitlab.mydomain.com:8080/访问gitlab,请确保gitlab_url也指向http://gitlab.mydomain.com:8080/