当前位置: 首页 > news >正文

kubernetes-harbor镜像仓库使用自签https证书

HTTPS 的原理

大家可能都听说过 HTTPS 协议之所以是安全的是因为 HTTPS 协议会对传输的数据进行加密,而加密过程是使用了非对称加密实现。但其实,HTTPS 在内容传输的加密上使用的是对称加密,非对称加密只作用在证书验证阶段。

HTTPS的整体过程分为证书验证和数据传输阶段,具体的交互过程如下:

img

① 证书验证阶段

  1. 浏览器发起 HTTPS 请求
  2. 服务端返回 HTTPS 证书
  3. 客户端验证证书是否合法,如果不合法则提示告警

② 数据传输阶段

1.当证书验证合法后,在本地生成随机数

2.通过公钥加密随机数,并把加密后的随机数传输到服务端

3.服务端通过私钥对随机数进行解密

4.服务端通过客户端传入的随机数构造对称加密算法,对返回结果内容进行加密后传输

背景

​ 工作中使用了harbor镜像仓库,因为要使用https,但是又没有购买权威机构CA的https证书,所以这里需要使用自签证书。

​ 常规的我们总得配置docker或者containerd等加skip verfiy 参数,并不是无感,所以使用很不方便。而且还得需要client无感知的使用https。

实现

基于操作系统 anolis 8 x86_64

具体harbor安装步骤忽略,直接docker-compose启动就行

1. 生成证书
1.1 生成ca证书

生成自签权威机构证书,自己就是权威机构。

#openssl genrsa -out ca.key 4096

调整-subj选项中的值以反映您的组织。如果使用FQDN连接Harbor主机,则必须将其指定为通用名称(CN)属性。如果使用IP访问,如下命令相关域名换成IP即可。

#openssl req -x509 -new -nodes -sha512 -days 3650 \-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=harbor.domain.net" \-key ca.key \-out ca.crt
1.2 生成域名服务端证书

证书通常包含一个.crt文件和一个.key文件,证书有效期10年。

#openssl genrsa -out harbor.domain.net.key 4096
#openssl req -sha512 -new \-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=harbor.domain.net" \-key harbor.domain.net.key \-out harbor.domain.net.csr

生成一个x509 v3扩展文件,无论您使用FQDN还是IP地址连接到Harbor主机,都必须创建此文件,以便可以为您的Harbor主机生成符合主题备用名称(SAN)和x509 v3的证书扩展要求。替换DNS条目以反映您的域

#cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names[alt_names]
DNS.1=domain.net
DNS.2=registry.domain.net
DNS.3=harbor.domain.net
DNS.4=harbor.tob.domain.net
IP.1=10.253.94.54
IP.2=127.0.0.1
EOF

使用该v3.ext文件为您的Harbor主机生成证书

#openssl x509 -req -sha512 -days 3650 \-extfile v3.ext \-CA ca.crt -CAkey ca.key -CAcreateserial \-in harbor.domain.net.csr \-out harbor.domain.net.crt
2. harbor配置证书

harbor.yml

# https related config
https:# https port for harbor, default is 443port: 443# The path of cert and key files for nginxcertificate: /opt/harbor/certs/harbor.domain.net.crtprivate_key: /opt/harbor/certs/harbor.domain.net.key
3. client 操作系统级别信任

放入前面生成的ca证书,加到默认的信任列表

#vim /etc/pki/ca-trust/source/anchors/ca.crt
#update-ca-trust
PS: 当然也可以把ca证书放入docker/containerd自己目录下,这种自行配置一下就行。

通过curl等尝试https请求吧,直接curl https://harbor.domain.net 请求即可~

参考:

https://www.cnblogs.com/birkhoffxia/articles/17153652.html

https://blog.lweiqiang.xyz/archives/harbor-zi-zhi-httpszheng-shu

https://cloud.tencent.com/developer/article/1601995

http://www.xdnf.cn/news/431029.html

相关文章:

  • Linux干货(一)
  • 动态规划问题 -- 多状态模型(打家劫舍II)
  • 磁光克尔效应在量子计算中的应用
  • GNSS数据自动化下载系统的设计与实现
  • udp多点通信和心跳包
  • 在scala中使用sparkSQL读入csv文件
  • python中的进程锁与线程锁
  • Mysql 事物
  • React状态管理-对state进行保留和重置
  • FCB文件疑问+求助:01 百度网盘视频自动生成AI笔记pdf会出现对应fcb文件-作用待详解
  • FFmpeg3.4 libavcodec协议框架增加新的decode协议
  • INFINI Console 纳管 Elasticsearch 9(一):指标监控、数据管理、DSL 语句执行
  • 深入理解 C++ 标准模板库(STL):从基础到实践
  • 不用mathtype将word中的公式修改成新罗马字体(加编号)
  • Android设备是否满足硬件要求
  • R-tree详解
  • 快速幂算法详解
  • 【前端】【JavaScript】【总复习】四万字详解JavaScript知识体系
  • 【C++进阶篇】二叉搜索树的实现(赋源码)
  • 国产大模型「五强争霸」,决战AGI!
  • upload-labs通关笔记-第3关 文件上传之黑名单绕过
  • 数据结构(2)线性表-顺序表
  • 二次封装 el-dialog 组件:打造更灵活的对话框解决方案
  • VUE_UI组件的二次封装
  • Redis Cluster 集群搭建和集成使用的详细步骤示例
  • 微信小程序分包策略:优化加载性能与用户体验
  • 使用Kubernetes实现零停机部署
  • android抓包踩坑记录
  • linux系统如何将采集的串口数据存储到txt
  • TCP首部格式及三次握手四次挥手