在极狐GitLab 配置 SSL/https

本文作者 徐晓伟

说明

  1. 极狐GitLab https 使用的是 nginx 实现的
  2. 本文使用的域名是IP 192.168.80.14(原因:如果使用域名,必须拥有这个域名的所有权,并增加解析才可以,要不然在 Docker 容器中,无法使用域名检出代码,因为根据域名找不到DNS记录)
  3. 如果使用自己生成的证书,git 检出代码、推送代码会失败,原因是无法验证证书的有效性,可以使用名 git config --global http.sslVerify false 禁用ssl的验证

生成证书

  1. 如果有域名,可以使用域名申请免费的证书,下载 Nginx 证书即可

    1. 阿里云SSL(https)证书免费申请
    2. 腾讯云SSL(https)证书免费申请
    3. 华为云SSL(https)证书免费申请
    4. 百度云SSL(https)证书免费申请
  2. 如果没有域名,可使用下列命令在 CentOS 上生成

  3. 创建证书文件夹

    mkdir -p /etc/gitlab/ssl
    cd /etc/gitlab/ssl
    
  4. 生成证书

    # 以 CentOS 为例
    # 如果出现 -bash: openssl: command not found,请安装 openssl:yum -y install openssl# 生成指定位数的 RSA 私钥:ca.key
    openssl genrsa -out ca.key 2048# 根据 RSA 私钥,生成 crt 证书:ca.crt
    # CN:设置你要使用的域名
    # -utf8:支持中文
    openssl req -new -x509 -days 3650 -key ca.key -subj "/C=CN/ST=山东/L=青岛/O=徐晓伟工作室/OU=徐晓伟工作室/CN=192.168.80.14/emailAddress=xuxiaowei@xuxiaowei.com.cn" -out ca.crt -utf8
    # openssl req -new -x509 -days 3650 -key ca.key -subj "/C=CN/ST=山东/L=青岛/O=徐晓伟工作室/OU=徐晓伟工作室/CN=gitlab.example.com/emailAddress=xuxiaowei@xuxiaowei.com.cn" -out ca.crt -utf8# 生成 server.csr、server.key
    # CN:设置你要使用的域名
    # -utf8:支持中文
    openssl req -newkey rsa:2048 -nodes -keyout server.key -subj "/C=CN/ST=山东/L=青岛/O=徐晓伟工作室/CN=192.168.80.14" -out server.csr -utf8
    # openssl req -newkey rsa:2048 -nodes -keyout server.key -subj "/C=CN/ST=山东/L=青岛/O=徐晓伟工作室/CN=gitlab.example.com" -out server.csr -utf8# 生成 ca.srl、server.crt
    # subjectAltName:设置 DNS、IP
    openssl x509 -req -extfile <(printf "subjectAltName=IP:192.168.80.14") -days 3650 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt
    # openssl x509 -req -extfile <(printf "subjectAltName=DNS:gitlab.example.com") -days 3650 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt
    
  5. 最终生成了:ca.crt、ca.key、ca.srl、server.crt、server.csr、server.key,其中 **server.crt **和 server.key 就是 Nginx 使用的证书

配置https

  1. 安装 vim

    yum -y install vim
    
  2. 编辑 gitlab.rb 文件

    vim /etc/gitlab/gitlab.rb
    
  3. 修改内容如下

    # 填写你的域名,注意是https
    external_url 'https://192.168.80.14'
    # 如果使用的是域名,填写域名
    # external_url 'https://gitlab.example.com'# 对应上方域名的证书
    # 将证书放在 /etc/gitlab/ssl 文件夹中
    # 如果使用的是阿里云等平台颁发的证书,此处可以使用 Nginx 证书,ssl_certificate 使用 .pem 文件
    nginx['ssl_certificate'] = "/etc/gitlab/ssl/server.crt"
    nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/server.key"# http 重定向到 https
    nginx['redirect_http_to_https'] = true# 禁用 Let's Encrypt 颁发证书
    letsencrypt['enable'] = false# 限制GitLab实例使用的IP(在使用域名时使用,注意浏览器缓存问题)
    # nginx['listen_addresses'] = ['192.168.80.14']
    
  4. 重新配置 GitLab

    sudo gitlab-ctl reconfigure
    
  5. 查看GitLab各服务的状态

    sudo gitlab-ctl status
    
  6. 日志

    sudo gitlab-ctl tail nginx
    
  7. 修改DNS(或者在本地 hosts 将域名指向 GitLab服务器IP),访问 https://GitLab域名 即可(如果使用自己生成的证书,可能会提示* 您的连接不是私密连接*,忽略即可)。

更多关于极狐GitLab 信息和最佳实践,请搜索【极狐GitLab】。

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

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

相关文章

go并发模式之----使用时顺序模式

常见模式之二&#xff1a;使用时顺序模式 定义 顾名思义&#xff0c;起初goroutine不管是怎么个先后顺序&#xff0c;等到要使用的时候&#xff0c;需要按照一定的顺序来&#xff0c;也被称为未来使用模式 使用场景 每个goroutine函数都比较独立&#xff0c;不可通过参数循环…

DOM 获取父子节点

DOM 是以树状结构排列的&#xff0c;所以父子关系是相对的&#xff0c;当li为我们的目标节点的时候&#xff0c;ul为其父节点&#xff0c;其他li为它的兄弟节点&#xff0c;li里面包含的标签为子节点&#xff0c;以此类推。 那我们如何找父节点&#xff1f; 元素.parentNode&am…

libigl 网格质量矩阵

文章目录 一、简介二、应用三、实现效果参考资料一、简介 在 libigl 中,igl::massmatrix 是一个用于计算给定三角网格的质量矩阵的函数。质量矩阵在有限元分析和其他模拟技术中非常有用,它通常用于描述网格中各个节点的质量或者用于计算模拟过程中的惯性效应。 igl::massmatr…

分布式系统如何做数据对账?

前言 在分布式系统中&#xff0c;虽然我们会使用各种分布式事务的方案&#xff0c;来保证各个系统之间的一致性。但是&#xff0c;很多时候往往事与愿违。 尤其是现在很多公司都采用最终一致性的方案&#xff0c;而所谓最终一致性&#xff0c;无论是本地消息表、事务消息、还…

蓝桥杯:数组分割(Java)

目录 问题描述输入格式输出格式代码实现 问题描述 小蓝有一个长度为N的数组A[A0,A1,… AN-1]。现在小蓝想要从A对应的数组下标所构成的集合Ⅰ0,1,2,…,N -1中找出一个子集R1&#xff0c;那么R1在Ⅰ中的补集为R2。记S1∈∑Ar&#xff0c;S2∈∑Ar&#xff0c;我们要求S1和S2均为…

node 之 npm

1.什么是包 node.js中的第三方模块又叫做包 就像电脑和计算机指的是相同的东西&#xff0c;第三方模块和包指的是同一个概念&#xff0c;只不过叫法不同 2.包的来源 不同于 Node.js 中的内置模块与自定义模块&#xff0c;包是由第三方个人或团队开发出来的&#xff0c;免费供所…

【计算机网络——应用层】http协议

文章目录 1. http协议1.1 http协议简介1.2 url组成1.3 urlencode与urldecode 2. http协议的格式2.1 http协议的格式2.2 一些细节问题 3. http的方法、状态码和常见响应报头3.1 http请求方法3.2 http状态码3.3 http常见的响应报头属性 4. 一个非常简单的http协议服务端5. http长…

【X806开发板试用】文章一 ubuntu开发环境搭建

一、环境配置 官方链接&#xff1a; 环境配置 1.安装必要的库和软件 sudo apt-get install build-essential gcc g make zlib* libffi-dev e2fsprogs pkg-config flex bison perl bc openssl libssl-dev libelf-dev libc6-dev-amd64 binutils binutils-dev libdwarf-dev u-b…

pix2pix-zero

pix2pix-zero&#xff1a;零样本图像到图像转换 论文介绍 Zero-shot Image-to-Image Translation 关注微信公众号: DeepGoAI 项目地址&#xff1a;https://github.com/pix2pixzero/pix2pix-zero 论文地址&#xff1a;https://arxiv.org/abs/2302.03027 本文介绍了一种名为…

Golang 函数中 defer 和 return 的调用顺序

先来看一段代码&#xff1a; package mainimport "fmt"func f() (ret int) {defer func() {ret}()return 1 } func main() {fmt.Println(f()) }上面这段代码的输出是2&#xff0c;不是1 原因在于&#xff1a; 1&#xff09;ret 是在执行 return 1 语句后发生的 2&…

基于SpringBoot多模块项目引入其他模块时@Autowired无法注入

基于SpringBoot多模块项目引入其他模块时Autowired无法注入 一、问题描述1、解决方案 一、问题描述 启动Spring Boot项目时报 Could not autowire. No beans of ‘xxxxxxxx’ type found. 没有找到bean的实例&#xff0c;即spring没有实例化对象&#xff0c;也就无法根据配置文…

【LeetCode-中等】209.长度最小的子数组-双指针/滑动窗口

力扣题目链接 1. 暴力解法 这道题的暴力解法是两层嵌套for循环&#xff0c;第一层循环从 i 0 开始遍历至数组末尾&#xff0c;第二层循环从 j i 开始遍历至找到总和大于等于 target 的连续子数组&#xff0c;并将该连续子数组的长度与之前找到的子数组长度相比较&#xff0…

传输层两大战将TCP、UDP的定位

传输层 定义一些传输数据的协议和端口&#xff0c;传输协议同时进行流量控制&#xff0c;根据接收方的数据吞入熟读&#xff0c;规定适当的发送速率&#xff0c;解决传输效率及能力问题 什么是TCP TCP/IP即传输控制/网络协议&#xff0c;是面向连接的协议&#xff0c;发送数…

什么是IP公网?

IP公网是指互联网上可以公开访问的IP地址。它是经过互联网服务提供商&#xff08;ISP&#xff09;向用户提供的公共网络IP地址。与之相对的是内网IP地址&#xff0c;内网IP地址一般是由路由器或交换机分配给连接在局域网中的设备使用。 IP公网的作用非常广泛&#xff0c;可以应…

C#解析JSON

https://blog.csdn.net/weixin_43046974/article/details/131449900 C#解析JSON 1. JSON定义2. JSON一般构成及解析方法3. 解析举例子 1. JSON对象解析&#xff0c;只包含一层对象{}2. 嵌套JSON对象解析&#xff0c;包含多层对象{}3. JSON数组解析1&#xff08;数组循环遍历&…

Web APIs知识点讲解(阶段二)

DOM-事件基础 一.事件 1.事件 目标&#xff1a;能够给 DOM元素添加事件监听 事件:事件是在编程时系统内发生的动作或者发生的事情&#xff0c;比如用户在网页上单击一个按钮 事件监听:就是让程序检测是否有事件产生&#xff0c;一旦有事件触发&#xff0c;就立即调用一个函…

http工具类

public class HttpRequstUtil {/*** http请求方法** param message 查询条件* param url 查询地址* param token 身份验证token* param socketTimeout socket 响应时间* param connectTimeout 超时时间* return 返回字符串*/Deprecatedpublic stat…

金仕达与 DolphinDB 建立深度合作,共筑 FICC 科技创新新篇章

从“关起门做交易”到“打开门做服务”&#xff0c;国内 FICC 业务正经历从自营到市场化服务的转变&#xff0c;借助数据分析、算法交易等技术的快速发展&#xff0c;交易团队能够更加主动地发现市场需求&#xff0c;为不同客群提供更好的做市业务&#xff0c;FICC 交易电子化已…

打造智能汽车微服务系统平台:架构的设计与实现

随着智能汽车技术的飞速发展&#xff0c;微服务架构在汽车行业中的应用越来越广泛。采用微服务架构可以使汽车系统更加灵活、可扩展&#xff0c;并且有利于快速推出新功能和服务。本文将从设计原则、关键技术、数据安全等方面&#xff0c;介绍如何搭建智能汽车微服务系统平台架…

网络通信技术

▶1.分组交换技术 在网络通信中&#xff0c;数据通过网络节点的某种转发方式&#xff0c;实现从一个端系统到另一个端系统之间的数据传输技术称为数据交换技术。数据交换技术有电路交换、报文交换和分组交换&#xff0c;计算机网络采用分组交换技术。 分组就是源主机(如服务器…