GitLab中的OpenSSL,自签名证书的验证是什么?

时间:2014-03-08 20:20:47

标签: ssl gitlab

在使用DebianGitLab上,我遇到了自签名证书的问题。

在互联网上进行大量搜索后仔细阅读代码(我猜,这是最后的手段,FOSS很有帮助),我在gitlab-shell/lib/gitlab_net.rb中发现以下几行让我...困惑。

if config.http_settings['self_signed_cert']
    http.verify_mode = OpenSSL::SSL::VERIFY_NONE
end

关于我迄今为止遇到的各种问题的大多数Stack Overflow响应让我相信VERIFY_NONE,正如您所期望的那样,不会验证任何内容。根据我的阅读,VERIFY_PEER似乎是自签名的正确设置。

当我读到它时,感觉就像采取步骤来使用证书来保护我的连接,然后决定不使用它?这是一个错误,还是我误读了这个来源?

1 个答案:

答案 0 :(得分:4)

gitlab-shell(在GitLab服务器上)必须通过HTTPSSSH URL API与GitLab实例进行通信。
如果它是自签名证书,则在尝试访问这些GitLab URL时不希望出现任何错误/警告,因此SSL::VERIFY_NONE

但是,客户端(GitLab服务器之外)也使用相同的证书,使用浏览器中相同的GitLab HTTPS URL。 对于他们来说,只要将自签名证书安装在浏览器密钥库中,它就很有用 对于那些交易(客户到GitLab),证书将被“验证”。


OP Kheldar中的point's out Mislav's post

  

OpenSSL希望在证书主题的散列名称以及以0开头的数字扩展名命名的文件中查找每个证书。

     

这意味着你不能只在目录中删除My_Awesome_CA_Cert.pem并期望它自动被选中   但是,OpenSSL附带了一个名为c_rehash的实用程序,您可以在目录上调用该实用程序,以使用适当命名的符号链接索引所有证书。

(例如参见OpenSSL Verify location

cd /some/where/certs
c_rehash .