git - 具有自签名证书的本地 HTTPS GitLab 服务器的克隆问题
问题描述
我在克隆配置了 HTTPS 并使用自签名证书的本地 GitLab 存储库时遇到问题。
我可以使用 Firefox 等访问 GitLab HMI,但是在本地存储库和伺服存储库之间执行 git 命令时遇到问题(拉、推、克隆等)。
例如(IP更改为123.123.123.123
和其他路径更改):
$ git clone https://123.123.123.123/MyName/MyProject.git
fatal: unable to access 'https://123.123.123.123/MyName/MyProject.git/': SSL: certificate subject name (123.123.123.123) does not match target host name '123.123.123.123'
以防万一:
$ git clone http://123.123.123.123/MyName/MyProject.git
fatal: unable to access 'http://123.123.123.123/MyName/MyProject.git/': Failed to connect to 123.123.123.123 port 80: Connexion refused
请注意,当主题名称和目标主机名之间没有明显差异时,已检测到差异。
我将来自 Gitlab 服务器的证书存储到本地
.pem
文件中(通过“openssl s_client -connect
”获得)。在克隆之前导出或添加“
IT_SSL_CAINFO=/path/to/cert/certs.pem
”不会改变行为。“
export GIT_SSL_NO_VERIFY=True
” 调整有效(并在此处和其他博客/论坛上提到),但也在系统中创建了一个漏洞(并且有点讨论使用 HTTPS 的点:-p),所以我不想依赖在上面。如果我停用 SSL 验证,然后克隆,然后重新激活 SSL 验证,并尝试拉或推,我会得到相同的行为。
“
openssl s_client -connect 123.123.123.123:443
”的结果(对不起格式,我似乎无法正确)(编辑:我使用此命令在本地获取证书,方法是将“BEGIN CERTIFICATE”行复制到“END CERTIFICATE”行我的本地 .pem 文件):CONNECTED(00000003) 深度=0 CN = 123.123.123.123 验证返回:1
证书链 0 s:/CN=123.123.123.123 i:/CN=123.123.123.123
服务器证书 -----BEGIN CERTIFICATE----- [...] -----END CERTIFICATE----- subject=/CN=123.123.123.123 issuer=/CN=123.123.123.123
未发送客户端证书 CA 名称对等签名摘要:SHA256 服务器临时密钥:ECDH、P-256、256 位
SSL 握手已读取 1404 字节并写入 433 字节
新,TLSv1/SSLv3,密码为 ECDHE-RSA-AES256-GCM-SHA384
服务器公钥为 2048 位
支持安全重新协商
压缩:无
扩展:无
无 ALPN 协商SSL-
会话:
协议:TLSv1.2
密码:ECDHE-RSA -AES256-GCM-SHA384
会话 ID:[...]
会话 ID-ctx:
主密钥:[...]
Key-Arg:无
PSK 身份:无
PSK 身份提示:无
SRP 用户名:无
TLS 会话票证生命周期提示:300(秒)
TLS 会话票证:
[...]开始时间:[...]
超时:300(秒)
验证返回码:0(正常)服务器文件上我的 gitlab.rb 文件的内容:
#================================================
external_url "https ://123.123.123.123"gitlab_rails['object_store']['enabled'] = false
gitlab_rails['object_store']['connection'] = {}
gitlab_rails['object_store']['storage_options'] = {}
gitlab_rails['object_store']['proxy_download '] = false
gitlab_rails['object_store']['objects']['artifacts']['bucket'] = nil
gitlab_rails['object_store']['objects']['external_diffs']['bucket'] = nil
gitlab_rails['object_store']['objects']['lfs']['bucket'] = nil
gitlab_rails['object_store']['objects']['uploads']['bucket'] = nil
gitlab_rails['object_store ']['对象']['包']['桶'] = nil
gitlab_rails['object_store']['objects']['dependency_proxy']['bucket'] = nil
gitlab_rails['object_store']['objects']['terraform_state']['bucket'] = nilLetencrypt['enable'] = false
#========================================== =====我的本地 .git/config 文件的内容:
#================================================
[核心]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = https://123.123.123.123/MyName/MyProject.git
fetch = +refs/heads/ :refs/remotes/origin/
[branch" master"]
remote = origin
merge = refs/heads/master
[http]
sslVerify = true
sslCAPath = /path/to/cert/certs.pem
#================== ==============================