Ssl git无法完全使用自签名证书

Ssl git无法完全使用自签名证书,ssl,gitlab,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' fro

我使用自签名证书加密。
经过一些工作之后,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.
我认为301可能是我的nginx配置中的这一部分:

server {
     listen         80;
     server_name    gitlab.MYDOMAIN.com;
     rewrite        ^ https://$server_name$request_uri? permanent;
}
我不知道这是不是有关系 谢谢。

ssh+ssl

但是,从客户的角度来看,这两者并不相关(除非你想做些什么)

ssh连接将与ssh守护进程(不需要任何证书)通信,并要求正确的ssh公钥已注册到服务器帐户
~/.ssh/authorized_keys
(由GitLab在用户在其配置文件页面中注册所述公钥时完成)

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

特别是,检查并查看是否需要向NGiNX提供的
.crt
文件添加CA

加上:

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


对于gitlab 6.0,这为我修复了一个错误:如果使用自签名证书,请确保在gitlab shell/config.yml中您的gitlab_url是https://... 而不是http://... 指定自签名证书:true

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

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

修复方法是编辑
/home/git/gitlab shell/config.yml
,并将
gitlab\u url:
中的
http://
替换为
https://


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

,以防有人遇到类似情况,我在端口8080上运行Gitlab,由于Gitlab shell/config.yml中的Gitlab\u url没有指向端口8080,因此出现重定向错误(我在80上运行的服务器正在启动)


总之,如果您通过gitlab_url访问gitlab,请确保它也指向!

@user2530437听起来不错。您说的“将CA添加到.crt文件”是什么意思?我有一台apache服务器运行着一个由我自己作为CA签名的crt(不是自签名的,我成为了自己的CA)我不确定你所说的将CA添加到crt@snowe2010那么您的证书就完成了,因为它是自己的CA。我的意思是,要使证书工作,它需要CA验证。@VonC,所以即使我的证书不是自签名的(技术上)我还需要在gitlab shell中启用自签名标志吗?@snowe2010实际上并不确定,因为我只使用了已签名证书(自签名或由CA验证)
server {
     listen         80;
     server_name    gitlab.MYDOMAIN.com;
     rewrite        ^ https://$server_name$request_uri? permanent;
}