Gitlab-CI Runner:绕过自签名证书验证
注册 Gitlab-CI 多运行器时,您可能会遇到相关错误进行证书验证,如:
couldn't execute POST against https://xxxx/ci/api/v1/runners/register.json: Post https://xxxx/ci/api/v1/runners/register.json: x509: cannot validate certificate for xxxx because it doesn't contain any IP SANs
Gitlab 时会出现此问题服务器提供缺少 IP 使用者备用名称 (SAN) 的自签名证书。要绕过证书验证,您可以在注册运行器时使用 --tls-ca-file 选项。
gitlab-runner register --tls-ca-file=/path/to/certificate.crt [other options]
其中 /path/to/certificate.crt 是自签名证书的绝对路径文件。或者,您可以通过将 --tls-disable-verify 设置为 true 来完全禁用证书验证,但不建议这样做,因为它可能会损害运行器的安全性。
gitlab-runner register --tls-disable-verify=true [other options]
如果您不是管理员Gitlab 服务器的权限,但负责管理运行器服务器,您可以使用以下命令从 Gitlab 服务器获取证书:
SERVER=gitlab.example.com PORT=443 CERTIFICATE=/etc/gitlab-runner/certs/${SERVER}.crt sudo mkdir -p $(dirname "$CERTIFICATE") openssl s_client -connect ${SERVER}:${PORT} -showcerts </dev/null 2>/dev/null | sed -e '/-----BEGIN/,/-----END/!d' | sudo tee "$CERTIFICATE" >/dev/null
一旦获得证书,您可以使用 --tls-ca-file 选项注册运行程序,如前所述。
请注意,由于 gitlab-runner 版本 1.11 中的错误,此方法可能不适用于自定义 CA 签名证书.2.如果遇到问题,建议升级到较新版本的 gitlab-runner。
以上是如何解决 GitLab-CI Runner 自签名证书验证错误?的详细内容。更多信息请关注PHP中文网其他相关文章!