本地 Gitlab-Server 上自签名证书和 Git LFS 的证书问题

问题描述 投票:0回答:0

我正在尝试在 debian 系统上设置本地 gitlab 服务器。 debian 在 Windows 10 主机上的 Virtual Box 中作为来宾运行。

我苦苦挣扎的最后一部分是使 git lfs 能够使用自签名证书。

我已经使用以下命令在服务器上设置了自签名证书:

//create a new file for the certificates
mkdir /etc/gitlab/ssl

//set permission for this directory
chmod 755 /etc/gitlab/ssl/

//enter ssl-dir and create certificates
cd /etc/gitlab/ssl
openssl req -x509 -newkey rsa:4096 -keyout Gitlab_Prototyp.key -out Gitlab_Prototyp.crt -days 10000 -sha256 -nodes


Contry Name: DE
Locality Name: SomeCity
Organization Name: SomeCompany
Common Name: 192.168.56.1

并如下更改 gitlab.rb 以使用证书:

external_url 'https://192.168.56.1'

//change and comment in 
nginx['enable'] = true
nginx['redirect_http_to_https'] = true                       
nginx['redirect_http_to_https_port'] = 80

nginx['ssl_certificate'] = "/etc/gitlab/ssl/Gitlab_Prototyp.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/Gitlab_Prototyp.key"

nginx['ssl_ciphers'] = "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256"

nginx['ssl_prefer_server_ciphers'] = "on" 
nginx['ssl_protocols'] = "TLSv1.2 TLSv1.3“
nginx['ssl_session_cache'] = "shared:SSL:10m"
nginx['ssl_session_timeout'] = "5m"
nginx['hsts_max_age'] = 31536000
nginx['hsts_include_subdomains'] = true
         

之后我做了一个

gitlab-ctl reconfigure
gitlab-ctl restart

之后我在浏览器中打开主机系统上的 gitlab 网站(在我的例子中是 192.168.56.1)并下载 PEM 证书并将其保存在 C:\Program Files\Git\mingw64\ssl 92-168-56-1.pem

比我配置一个 git-repo 来使用证书如下:

git config --global http."https://192.168.56.1/".sslCAInfo "C:\Program Files\Git\mingw64\ssl\192-168-56-1.pem"

并在 gitlab 中对新项目进行初步推送

git push -uf --all origin

到目前为止它工作正常。 Git 正在使用自签名证书。

但是当我现在将文件添加到 git lfs 并执行 git push -uf --all origin 我得到以下错误:

Remote "origin" does not support the Git LFS locking API. Consider disabling it with:
  $ git config lfs.https://192.168.56.1/gitlab-instance-0fc1769d/testgitproject.git/info/lfs.locksverify false


//I counter this error by executing
git config lfs.https://192.168.56.1/gitlab-instance-0fc1769d/testgitproject.git/info/lfs.locksverify false

Whit 下一个 git push -uf --all origin 尝试我得到以下错误

batch response: Post "https://192.168.56.1/gitlab-instance-0fc1769d/testgitproject.git/info/lfs/objects/batch": x509: certificate relies on legacy Common Name field, use SANs instead

我试着环顾四周,然后通过在服务器上创建一个新证书来解决以下问题(按照建议,例如here

cd /etc/gitlab/ssl

openssl req -x509 -newkey rsa:4096 -keyout NSI_Gitlab_Prototyp.key -out NSI_Gitlab_Prototyp.crt -days 10000 -sha256 -nodes -addext "subjectAltName = DNS:192.168.56.1"

gitlab-ctl reconfigure
gitlab-ctl restart

之后我在浏览器的主机系统上再次打开 gitlab 网站(在我的例子中是 192.168.56.1)并下载 PEM 证书,将其保存在 C:\Program Files\Git\mingw64\ssl 92-168-56-1.pem 再次执行

git config --global http."https://192.168.56.1/".sslCAInfo "C:\Program Files\Git\mingw64\ssl\192-168-56-1.pem"

当我现在运行 git push -uf --all origin 我得到以下错误:

fatal: unable to access 'https://192.168.56.1/gitlab-instance-0fc1769d/testgitproject.git/': SSL: no alternative certificate subject name matches target host name '192.168.56.1'

如何让 Git LFS 在具有活动 SSL 的本地 gitlab 服务器上运行?

附: 我知道在 Git 中停用 SSL 的解决方案(例如使用 git config http.sslVerify false),但这不是我要找的。 服务器最终应该在整个本地网络中运行,而不仅仅是在主机上。

git gitlab git-lfs
© www.soinside.com 2019 - 2024. All rights reserved.