gitlab内网配置https调整加载异常

news/2026/1/22 17:37:47/文章来源:https://www.cnblogs.com/ljbguanli/p/19518430

gitlab内网配置https调整加载异常

配置重加载异常:

There was an error running gitlab-ctl reconfigure: letsencrypt_certificate[192.168.109.110] (letsencrypt::http_authorization line 3) had an error: Faraday::ConnectionFailed: acme_certificate[staging] (/opt/gitlab/embedded/cookbooks/cache/cookbooks/letsencrypt/resources/certificate.rb line 20) had an error: Faraday::ConnectionFailed: Failed to open TCP connection to acme-staging.api.letsencrypt.org:443 (getaddrinfo: Name or service not known)

这个错误的核心原因是 GitLab 服务器无法解析 Let's Encrypt 的 ACME 服务器域名acme-staging.api.letsencrypt.org),导致无法建立 HTTPS 连接申请证书。以下是分步排查和解决方案:

一、先明确关键前提(避免无效操作)

Let's Encrypt 证书仅支持公网可访问的域名(如 gitlab.yourdomain.com),不支持内网 IP(如 192.168.109.110)!如果你的 GitLab 仅部署在内网、没有公网域名和公网访问权限,无法使用 Let's Encrypt 自动签发证书,建议直接跳过 Let's Encrypt 配置,改用自签名证书或内网 CA 证书(后续会补充方案)。

二、若有公网域名和公网访问权限(解决 DNS 解析问题)

错误本质是服务器 DNS 解析失败,按以下步骤排查:

1. 测试服务器是否能解析 Let's Encrypt 域名

登录 GitLab 服务器,执行以下命令测试 DNS 解析:

bash

运行

# 测试解析 Let's Encrypt  staging 服务器(错误中提到的域名)
nslookup acme-staging.api.letsencrypt.org
# 测试解析 Let's Encrypt 生产服务器(正式环境用)
nslookup acme-v02.api.letsencrypt.org
# 测试公网连通性(如百度),排除服务器断网
nslookup www.baidu.com
  • 若输出 Name or service not known:说明 DNS 配置有问题,进入步骤 2。
  • 若能正常解析(返回 IP 地址):进入步骤 3 测试网络连通性。
2. 修复 DNS 配置(核心解决步骤)

服务器无法解析域名,通常是 /etc/resolv.conf 中 DNS 服务器配置错误或不可用。

方法 1:临时更换 DNS 测试(立即生效,重启后失效)

bash

运行

# 编辑 resolv.conf,添加公共 DNS(如 8.8.8.8 或 114.114.114.114)
sudo vi /etc/resolv.conf
# 添加以下内容(替换原有 nameserver 行)
nameserver 8.8.8.8  # Google DNS
nameserver 114.114.114.114  # 国内 DNS
方法 2:永久修改 DNS(推荐,避免重启失效)

不同系统修改方式不同,以主流系统为例:

  • Ubuntu/Debian:编辑网络配置文件(以 eth0 网卡为例,根据实际网卡名修改):

    sudo vi /etc/network/interfaces

    在网卡配置中添加 DNS:

    iface eth0 inet static# 原有 IP、网关等配置不变dns-nameservers 8.8.8.8 114.114.114.114

    重启网络:

    sudo systemctl restart networking
  • CentOS/RHEL:编辑网卡配置文件(以 ens33 为例):

    sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33

    添加 / 修改 DNS 配置:

    DNS1=8.8.8.8
    DNS2=114.114.114.114

    重启网络:

    sudo systemctl restart network
验证 DNS 修复

修改后重新执行 nslookup acme-staging.api.letsencrypt.org,若能返回 IP(如下)则说明 DNS 已修复:

Server:		8.8.8.8
Address:	8.8.8.8#53
Non-authoritative answer:
acme-staging.api.letsencrypt.org	canonical name = staging.api.letsencrypt.org.
staging.api.letsencrypt.org	canonical name = prod.api.letsencrypt.org.edgesuite.net.
prod.api.letsencrypt.org.edgesuite.net	canonical name = e1767.dscb.akamaiedge.net.
Name:	e1767.dscb.akamaiedge.net
Address: 23.36.77.114
3. 测试 443 端口连通性(排除防火墙 / 网络限制)

DNS 修复后,若仍报错,可能是服务器防火墙或网关限制了 443 端口(Let's Encrypt 需通过 443 通信):

# 测试 TCP 连接 443 端口
telnet acme-staging.api.letsencrypt.org 443
# 或用 curl 测试(更直观)
curl -v https://acme-staging.api.letsencrypt.org
  • 若输出 Connected to acme-staging.api.letsencrypt.org 或 curl 返回 HTTP/1.1 200 OK:说明网络连通正常。

  • 若超时 / 拒绝连接:需开放 443 出站端口(Let's Encrypt 仅需服务器主动访问公网 443,无需公网访问服务器 443):

    # CentOS/RHEL 开放 443 出站(firewalld)
    sudo firewall-cmd --permanent --add-port=443/tcp
    sudo firewall-cmd --reload
    # Ubuntu/Debian 开放 443 出站(ufw)
    sudo ufw allow out 443/tcp

    若服务器在云环境(如阿里云、AWS),还需检查安全组规则,允许 443 出站流量。

4. 重新执行 gitlab-ctl reconfigure

修复 DNS 和网络后,重新运行配置命令:

sudo gitlab-ctl reconfigure

若仍报错,可能是 Let's Encrypt 配置有误(如域名未指向服务器公网 IP),需检查 gitlab.rb 中的 Let's Encrypt 配置:

sudo vi /etc/gitlab/gitlab.rb

确保配置正确(替换为你的公网域名):

# 禁用内置 NGINX 的自动 HTTPS(由 Let's Encrypt 管理)
nginx['redirect_http_to_https'] = true
nginx['ssl_certificate'] = "/etc/gitlab/ssl/#{external_url_host}.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/#{external_url_host}.key"
# Let's Encrypt 配置(必须用公网域名,不能用 IP)
letsencrypt['enable'] = true
letsencrypt['contact_emails'] = ['your-email@example.com']  # 接收证书过期通知
letsencrypt['domain'] = 'gitlab.yourdomain.com'  # 你的公网域名(需解析到服务器公网 IP)
letsencrypt['auto_renew'] = true

修改后执行 sudo gitlab-ctl reconfigure 生效。

三、若为内网环境(无公网域名 / 访问权限):跳过 Let's Encrypt

内网 GitLab 无法使用 Let's Encrypt,建议用以下方案替代:

方案 1:使用自签名证书
  1. 生成自签名证书(替换为你的内网域名或 IP):

    sudo mkdir -p /etc/gitlab/ssl
    sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \-keyout /etc/gitlab/ssl/gitlab.key \-out /etc/gitlab/ssl/gitlab.crt

    执行时按提示填写信息(Common Name 填内网域名或 IP,如 192.168.109.110)。

  2. 配置 GitLab 使用自签名证书:

    sudo vi /etc/gitlab/gitlab.rb

    添加以下配置(注释掉原有 Let's Encrypt 相关配置):

    external_url 'https://192.168.109.110'  # 内网 HTTPS 地址
    nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.crt"
    nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.key"
    nginx['redirect_http_to_https'] = true  # HTTP 重定向到 HTTPS
  3. 重新配置 GitLab:

    sudo gitlab-ctl reconfigure
方案 2:使用内网 CA 证书(推荐企业内网)

若企业有内部 CA 服务器,可申请内网可信证书,配置方式与自签名证书一致(仅替换 gitlab.crt 和 gitlab.key 为 CA 签发的证书即可),客户端无需忽略证书警告。

总结

  1. 若用 Let's Encrypt:必须有公网域名 + 公网访问权限,先修复 DNS 解析(更换公共 DNS),再开放 443 出站端口,最后重新配置。
  2. 若为内网环境:直接放弃 Let's Encrypt,使用自签名证书或内网 CA 证书,配置步骤更简单且稳定。

按以上步骤操作后,gitlab-ctl reconfigure 即可正常执行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1201156.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java企业入局AI:核心在于落地,框架需“授人以渔”

当人工智能从技术概念走向产业落地,Java作为企业级开发的主流语言,如何衔接AI能力成为众多技术团队的核心命题。不同于单纯的算法研究,Java企业的AI探索,重点从来不是从零搭建大模型,而是如何将AI能力与现有业务系统深…

行李包装机选购新视角:2026年实力厂家质量揭秘,摇臂式缠绕包装机/自动缠绕包装机/全自动封箱机,行李包装机工厂联系电话

随着全球物流行业的快速发展,行李包装机作为提升运输效率、保障货物安全的核心设备,其市场需求持续攀升。然而,市场产品良莠不齐,采购方在技术适配性、稳定性及售后服务等维度面临决策难题。本文基于公开数据与行业…

2026 年靠谱的一键式闪测仪,专业售后闪测仪厂家推荐及选购

2026 年靠谱的一键式闪测仪,专业售后闪测仪厂家推荐及选购 在当今制造业蓬勃发展的大背景下,工业生产对测量检测环节的要求日益提高。闪测仪作为这一环节的关键设备,其性能的优劣直接影响着产品质量和生产效率。一款…

闪测仪在工业测量的重要地位与迪赛福品牌

闪测仪在工业测量的重要地位与迪赛福品牌 在工业测量领域,闪测仪(又称一键式影像测量仪)正以其高效、精准的检测能力,成为现代智能制造的关键装备。它能有效解决传统测量方式在效率、精度等方面的诸多问题,为工业…

2026年AI摄影培训机构TOP5优选指南:五大优质机构助力视觉职业成长,涵盖摄影培训、短视频培训、视频剪辑培训

随着AI技术重塑影像行业,商业摄影、短视频创作、AI修图等复合型人才缺口持续扩大,预计2025年相关领域人才缺口规模将突破220万。面对市场对“传统摄影+AI技能”融合型人才的迫切需求,如何选择一家兼具教学实力、就业…

packager.dll文件丢失找不到 免费下载方法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

pcacli.dll文件丢失找不到 免费下载方法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

2026中医执医技能考试培训机构深度测评:哪家真正助力通关?

2026中医执医技能考试培训机构深度测评:哪家真正助力通关?前言:技能考试成关键门槛,选对机构事半功倍随着中医药事业振兴发展,中医执业医师资格考试报考人数逐年攀升,2026年预计将再创新高。中医执医考试分为技能…

虚拟储能助力微电网优化:Matlab编程实现智慧楼宇模型

虚拟储能 微电网优化matlab 采用matlab编程,通过改进粒子群算法得到基于虚拟储能的智慧楼宇模型,程序运行稳定 最近在研究虚拟储能在微电网优化中的应用,用Matlab编程实现了一个基于虚拟储能的智慧楼宇模型,感觉还挺有意思的&…

2026年了,别求“声音克隆破解版”下载了:揭秘本地部署的3大隐形深坑

2026 年了,很多想尝试 AI 配音的朋友,第一反应依然是全网搜索声音克隆软件下载,或者到处求一个无毒的AI 变声器安装包。大家普遍有一种误区,认为只有下载到本地的绿色版声音克隆工具才够稳。但现实往往是:你以为找…

odbc32gt.dll文件丢失找不到 免费下载方法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

Dev C++ 更换高版本的 C++ 编译器

DEV C++ 可以更换高版本 C++ 编译器(如 MinGW‑w64/TDM‑GCC 的新版 GCC),以支持C++17/C++20等新标准。 一、更换步骤(以 MinGW‑w64 为例) 1、准备编译器 下载 MinGW‑w64(推荐 GCC 10.3+,如 12.2/13.2),如从…

odbcjt32.dll文件丢失找不到 免费下载方法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

前端小白别懵!3分钟搞懂行内、块级和行内块元素(附实战避坑指

前端小白别懵!3分钟搞懂行内、块级和行内块元素(附实战避坑指 前端小白别懵!3分钟搞懂行内、块级和行内块元素(附实战避坑指南)先甩结论:别把元素当祖宗,它们只是浏览器的三副面孔行内元素&…

循环3秒左滑-支持屏幕上下分屏

"auto";/*** 通用左滑函数(指定Y轴位置,适配所有设备屏幕比例)* param {number} yPosition 滑动的Y轴位置(垂直坐标)* param {number} duration 滑动时长(毫秒),默认500ms…

樱花厨电新作:樱花燃气灶S839G,以科技守护家的温暖炊烟

在忙碌的现代生活中,厨房不再只是烹饪的空间,更是家人情感交融的温暖场所。樱花卫厨始终致力于为每个家庭打造更安心、更便捷的烹饪体验,近日推出的樱花燃气灶S839G,正是这一理念的生动诠释。该产品以“轻松点火安…

onnxruntime.dll文件丢失找不到 免费下载方法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

吐血推荐研究生必备AI论文写作软件TOP10

吐血推荐研究生必备AI论文写作软件TOP10 学术写作工具的革新与测评必要性 在科研日益数字化的今天,研究生群体面临的研究压力与写作挑战愈发突出。从文献检索到论文撰写,再到格式调整与查重检测,每一个环节都可能成为效率瓶颈。而AI写作工具的…

养老机器人健康监测技术解析与主流产品综述

随着人口老龄化趋势的加剧,独居老人及养老机构对智能化护理的需求日益增长。养老健康监测机器人作为这一场景下的核心设备,正逐渐从单一的“报警工具”演变为具备主动感知与数据分析能力的“护理助手”。在实际应用中…

校园实训室智能机器人设备深度解析

随着人工智能技术的快速迭代,职业教育与高等院校的实训教学正面临从单一技能培训向全栈具身智能开发转型的挑战,如何构建一个既能还原真实商业场景,又能满足底层算法教学的硬件生态成为关键。以下是对建设高标准实训…