目录

一、安装docker、docker-compose

二、安装harbor

三、签发证书

四、修改配置文件

五、运行harbor

六、客户端测试:


使用系统:ubuntu 20.04.3

harbor依赖于docker、docker-compose,因此下面先安装这两个项目

一、安装docker、docker-compose

可以进入清华大学镜像源看下安装步骤

https://mirrors.tuna.tsinghua.edu.cn/help/docker-ce/

1、首先安装依赖

sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common

2、 信任 Docker 的 GPG 公钥:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

3、 添加软件仓库

echo \"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu \$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

4、最后安装

sudo apt-get update
sudo apt-get install docker-ce

5、安装docker-compose

1、下载docker-compose二进制程序包
root@harbor:/apps# wget https://github.com/docker/compose/releases/download/v2.3.4/docker-compose-linux-x86_642、将docker-compose二进制文件赋予执行权限
root@harbor:/apps# chmod  a+x docker-compose-linux-x86_643、把文件移至系统全局环境变量/usr/bin中,并重命名为docker-compose
root@harbor:/apps# mv docker-compose-linux-x86_64 /usr/bin/docker-compose4、查看docker-compose版本
root@harbor:/apps# docker-compose version
Docker Compose version v2.3.4

二、下载安装harbor
Releases · goharbor/harbor · GitHub

root@harbor:/apps# wget https://github.com/goharbor/harbor/releases/download/v2.5.3/harbor-offline-installer-v2.5.3.tgz

解压harbor

root@harbor:/apps# tar xvf harbor-offline-installer-v2.5.3.tgz
harbor/harbor.v2.5.3.tar.gz
harbor/prepare
harbor/LICENSE
harbor/install.sh
harbor/common.sh
harbor/harbor.yml.tmplroot@harbor:/apps# ls
harbor  harbor-offline-installer-v2.5.3.tgzroot@harbor:/apps# cd harbor/
root@harbor:/apps/harbor# ls
certs  common  common.sh  docker-compose.yml  harbor.v2.5.3.tar.gz  harbor.yml.tmpl  install.sh  LICENSE  prepareroot@harbor:/apps/harbor# cp harbor.yml.tmpl harbor.ymldocker-compose.yml是默认的配置文件,将它作为cp一份作为配置文件

修改配置文件:其中需要添加公钥私钥,我在修改配置文件之前先完成密钥的签发

修改如下五项参数

hostname:      harbor的名称可以使用IP或域名,推荐域名可以实现https
certificate:   添加公钥,需要按照官方方式进行签发证书
private_key:  添加私钥
data_volume:     定义存储
harbor_admin_password:     修改harbor登录密码

三、签发证书

签发证书

可进入harbor官网浏览
https://goharbor.io/docs/2.4.0/install-config/configure-https/
1、自签名CA机构

1、创建certs目录存放证书文件
root@harbor:/apps/harbor# mkdir /apps/harbor/certs
root@harbor:/apps/harbor# cd certs/2、创建CA私钥
root@harbor:/apps/harbor/certs# openssl genrsa -out ca.key 4096
Generating RSA private key, 4096 bit long modulus (2 primes)
................................................++++
..............................++++
e is 65537 (0x010001)3、自签发CA crt证书
root@harbor:/apps/harbor/certs# openssl req -x509 -new -nodes -sha512 -days 3650 \
>             -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=magedu.com" \
>             -key ca.key \
>             -out ca.crt
root@harbor:/apps/harbor/certs# ll
total 16
drwxr-xr-x 2 root root 4096 Nov  7 11:52 ./
drwxr-xr-x 3 root root 4096 Nov  7 11:47 ../
-rw-r--r-- 1 root root 2041 Nov  7 11:52 ca.crt
-rw------- 1 root root 3247 Nov  7 11:48 ca.key这样就签发好了一对密钥了,就可以用它们来给harbor来颁发证书了#参数说明:
## C,Country,代表国家
## ST,STate,代表省份
## L,Location,代表城市
## O,Organization,代表组织,公司
## OU,Organization Unit,代表部门
## CN,Common Name,代表服务器域名
## emailAddress,代表联系人邮箱地址。

2、客户端私钥证书生成

root@harbor:/apps/harbor/certs# openssl genrsa -out magedu.net.key 4096
Generating RSA private key, 4096 bit long modulus (2 primes)
.....................................++++
.........................................++++
e is 65537 (0x010001)
root@harbor:/apps/harbor/certs# ls
ca.crt  ca.key  magedu.net.key申请的这个magedu.net.key是给harbor用的magedu.net是harbor的域名生成一个csr文件,但是这个文件暂时还不能使用
root@harbor:/apps/harbor/certs# openssl req -sha512 -new \
>             -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=magedu.net" \
>             -key magedu.net.key \
>             -out magedu.net.csr

3、准备签发环境

签发SAN文件
生成一个ext文本文件,内容就是签发信息,把这些证书签发给哪些目标的域名
所以harbor的域名必须选择下面的三个域名,签发的证书只对下面三个域名有效root@harbor:/apps/harbor/certs# cat > v3.ext <<-EOF
>             authorityKeyIdentifier=keyid,issuer
>             basicConstraints=CA:FALSE
>             keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
>             extendedKeyUsage = serverAuth
>             subjectAltName = @alt_names
>             [alt_names]
>             DNS.1=magedu.com
>             DNS.2=harbor.magedu.net
>             DNS.3=harbor.magedu.local
> EOFroot@harbor:/apps/harbor/certs# ls
ca.crt  ca.key  magedu.net.key  v3.ext

4、使用自签名CA签发证书

root@harbor:/apps/harbor/certs# openssl x509 -req -sha512 -days 3650 \
>             -extfile v3.ext \
>             -CA ca.crt -CAkey ca.key -CAcreateserial \
>             -in magedu.net.csr \
>             -out magedu.net.crt
Signature ok
subject=C = CN, ST = Beijing, L = Beijing, O = example, OU = Personal, CN = magedu.net
Getting CA Private Key-CA ca.crt -CAkey ca.key表示CA直接签发,指定magedu.net.csr这个文件,
签发完后是magedu.net.crt文件;并会加载v3.ext这个文件,v3.ext文件的
信息会被签发到magedu.net.crt文件信息证书里我们harbor用的就是这个magedu.net.crt和magedu.net.key文件

四、修改配置文件

修改如下五项参数
hostname:      harbor的名称可以使用IP或域名,推荐域名可以实现https
certificate:   添加公钥,需要按照官方方式进行签发证书
private_key:  添加私钥
data_volume:     定义存储路径(建议一个单独分区作为存储路径)
harbor_admin_password:     修改harbor登录密码

修改域名、添加公私钥,剩下两个参数根据自己需求配置即可

五、运行harbor

root@harbor:/apps/harbor# ./install.sh --with-trivy  --with-chartmuseum  --with-trivy[Step 5]: starting Harbor ...
[+] Running 13/13⠿ Network harbor_harbor              Created                                                                                            0.1s⠿ Network harbor_harbor-chartmuseum  Created                                                                                            0.1s⠿ Container harbor-log               Started                                                                                            1.0s⠿ Container registryctl              Started                                                                                            3.5s⠿ Container harbor-portal            Started                                                                                            3.6s⠿ Container registry                 Started                                                                                            3.3s⠿ Container chartmuseum              Started                                                                                            2.7s⠿ Container redis                    Started                                                                                            3.7s⠿ Container harbor-db                Started                                                                                            2.8s⠿ Container harbor-core              Started                                                                                            4.7s⠿ Container trivy-adapter            Started                                                                                            4.9s⠿ Container harbor-jobservice        Started                                                                                            5.8s⠿ Container nginx                    Started                                                                                            5.9s
✔ ----Harbor has been installed and started successfully.----

安装成功,登录查看

六、客户端测试:

使用客户端与harbor服务器端进行镜像传输测试

harbor服务端  172.31.7.104
客户端        172.31.7.110

配置两个主机域名解析:

客户端要使用tls与harbor服务端通信、使用的是自签证书,那么必须建立一个目录

/etc/docker/certs.d/xxx  最后的一级子目录名必须是harbor服务器的域名

这里harbor的域名是harbor.magedu.com

1、客户端创建证书目录

root@k8s-deploy:~# mkdir /etc/docker/certs.d/harbor.magedu.net -p

2、harbor服务器端把公钥证书拷贝到客户端

root@harbor:~# scp /apps/harbor/certs/magedu.net.crt  k8s-deploy:/etc/docker/certs.d/harbor.magedu.net

3、客户端登录harbor服务端,如果证书不生效则无法登录成功

4、登录harbor后,在客户端的/root/.docker/config.json文件中有harbord的账号信息

root@k8s-deploy:~# cat /root/.docker/config.json
{"auths": {"harbor.magedu.net": {"auth": "YWRtaW46MTIz"}},"HttpHeaders": {"User-Agent": "Docker-Client/19.03.15 (linux)"}
}root@k8s-deploy:~#可对密码进行解密
root@k8s-deploy:~# echo YWRtaW46MTIz | base64 -d
admin:123root@k8s-deploy:~#

5、上传镜像至harbor

目前客户端还没用镜像,需要下载一个镜像并打好标签才能上传至harbor

1、配置docker镜像加速

添加阿里云镜像加速器,需要自己注册,每个人都不同,下面是我注册的阿里云加速器
root@k8s-deploy:~# cat /etc/docker/daemon.json
{"registry-mirrors":["https://7slsp6vu.mirror.aliyuncs.com/"]}重启服务
root@k8s-deploy:~# systemctl restart docker.service

2、下载镜像,并重打标签

1、下载个busybox镜像
root@k8s-deploy:~# docker pull busybox
Using default tag: latest
latest: Pulling from library/busybox
5cc84ad355aa: Pull complete
Digest: sha256:5acba83a746c7608ed544dc1533b87c737a0b0fb730301639a0179f9344b1678
Status: Downloaded newer image for busybox:latest
docker.io/library/busybox:latest
root@k8s-deploy:~# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
busybox             latest              beae173ccac6        10 months ago       1.24MB2、打标签,想上传到harbor服务器,镜像第一部分必须是harbor的域名,第二部分是项目名称,最后是镜像
root@k8s-deploy:~# docker tag busybox:latest harbor.magedu.net/baseimages/busybox:latest
root@k8s-deploy:~#
root@k8s-deploy:~# docker images
REPOSITORY                             TAG                 IMAGE ID            CREATED             SIZE
busybox                                latest              beae173ccac6        10 months ago       1.24MB
harbor.magedu.net/baseimages/busybox   latest              beae173ccac6        10 months ago       1.24MB

在harbor上创建一个标签中指定baseimages名称的项目

3、上传镜像至harbor的baseimages项目中

root@k8s-deploy:~# docker push harbor.magedu.net/baseimages/busybox:latest
The push refers to repository [harbor.magedu.net/baseimages/busybox]
01fd6df81c8e: Pushed
latest: digest: sha256:62ffc2ed7554e4c6d360bce40bbcf196573dd27c4ce080641a2c59867e732dee size: 527

可以查看到该项目已经有了一个刚刚上传的镜像了

以上就是使用自签发的证书实现https的harbor服务器了

部署harbor并实现https(SAN签发证书)相关推荐

  1. harbor镜像仓库-https访问的证书配置 (docker配置harbor https证书)

    harbor镜像仓库-https访问的证书配置 生成CA证书 随便搞个什么文件夹,用于存放生成的证书 创建key文件: root@eb7023:/data/certs>openssl genrs ...

  2. 部署harbor服务器(https/http)

    1.下载官方的harbor离线包 https://github.com/goharbor/harbor/releases 2.下载后上传到服务器并解压 3.修改harbor.yml4.https需要生 ...

  3. HTTPS中CA证书的签发及使用过程

    1,HTTPS 简单来讲,HTTPS (Secure Hypertext Transfer Protocol)安全超文本传输协议就是安全的HTTP,我们知道HTTP是运行在TCP层之上的,HTTPS在 ...

  4. openssl 自建CA签发证书 网站https的ssl通信

    <<COMMENT X509 文件扩展名 首先我们要理解文件的扩展名代表什么.DER.PEM.CRT和CER这些扩展名经常令人困惑. 很多人错误地认为这些扩展名可以互相代替.尽管的确有时候 ...

  5. 申请https域名,证书和部署流程

    我把申请https域名,证书和部署流程,大致整理了一下.同道中人,以后遇到类似业务,可以参照这个.少踩一下坑! 一 : 相关知识 SSL安全套接层(Secure Socket Layer) SSL证书 ...

  6. 云原生yaml部署harbor

    云原生yaml部署harbor 1 .创建自定义证书 安装 Harbor 我们会默认使用 HTTPS 协议,需要 TLS 证书,如果我们没用自己设定自定义证书文件,那么 Harbor 将自动创建证书文 ...

  7. kubernetes之helm部署harbor

    安装 helm Helm致力于成为k8s集群的应用包管理工具,希望像linux 系统的RPM DPKG那样成功:确实在k8s上部署复杂一点的应用很麻烦,需要管理很多yaml文件(configmap,c ...

  8. docker部署harbor镜像仓库

    Docker私有仓库Harbor介绍和部署记录 Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的Reg ...

  9. 在 KubeSphere 中部署 Harbor

    Harbor 是一个开源仓库,通过各种策略和基于角色的访问控制来保护制品,确保镜像经过扫描且没有漏洞,并对镜像签名使其受信. 本教程演示如何从 KubeSphere 应用商店部署 Harbor. 准备 ...

最新文章

  1. 14年12月CCF真题1-门禁系统
  2. 如何并行运行多个npm脚本?
  3. LinkServer--服务器选项
  4. 健康很重要 程序员应该坚持正确的坐姿工作
  5. .NET Core 3.0 可卸载程序集原理简析
  6. 自适应滤波实例之系统辨识
  7. 来看看比尔盖茨当年写的BASIC解释器源代码吧,你就知道泰勒级数有什么用了...
  8. Azure进阶攻略 | 你的程序也能察言观色?这个真的可以有!
  9. x230 linux驱动程序,佳能 ThinkPad X230 Tablet 驱动程序下载-更新佳能软件(平板电脑)...
  10. 8.3.2 构建组合行为
  11. java长连接_java如何实现http长连接
  12. 巴西电商olist store订单数据分析
  13. JAVA-基础之如何区分汉字和英文
  14. mysql 基数_MySQL 索引基数
  15. 怎么用python电商文本挖掘?(5)
  16. 从数据仓库到百万标签库,精细化数据管理,这么做就够了
  17. 用最少的代码渲染3D模型
  18. Categories各种举例
  19. H264学习笔记(1):视频压缩编码的基本原理
  20. chart.js使用用法

热门文章

  1. linux 多个csv合并成一个csv
  2. mysql 学生成绩管理数据库操作案例
  3. 身份证图像识别api
  4. 工业镜头基础知识整理
  5. Unable to chmod sdcard: Read-only file system
  6. Android TabLayout设置选中状态标题字体大小,粗细
  7. 移动互联网主要的技术标准
  8. Spring大白话(●—●)
  9. 移动端的开发详解与1px边框等注意事项
  10. 毛永胜计算机教师,做新时代智慧型阳光教师 ——记丁香路小学教师心理健康实训讲座...