部署harbor并实现https(SAN签发证书)

这篇具有很好参考价值的文章主要介绍了部署harbor并实现https(SAN签发证书)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 

目录

一、安装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/

部署harbor并实现https(SAN签发证书)

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_64

2、将docker-compose二进制文件赋予执行权限
root@harbor:/apps# chmod  a+x docker-compose-linux-x86_64

3、把文件移至系统全局环境变量/usr/bin中,并重命名为docker-compose
root@harbor:/apps# mv docker-compose-linux-x86_64 /usr/bin/docker-compose

4、查看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.tmpl

root@harbor:/apps# ls
harbor  harbor-offline-installer-v2.5.3.tgz

root@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  prepare


root@harbor:/apps/harbor# cp harbor.yml.tmpl harbor.yml

docker-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
> EOF

root@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并实现https(SAN签发证书)
 

六、客户端测试:

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

harbor服务端  172.31.7.104
客户端        172.31.7.110

配置两个主机域名解析:

部署harbor并实现https(SAN签发证书)部署harbor并实现https(SAN签发证书)

客户端要使用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服务端,如果证书不生效则无法登录成功

部署harbor并实现https(SAN签发证书)

  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.24MB

2、打标签,想上传到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名称的项目

部署harbor并实现https(SAN签发证书)

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

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

部署harbor并实现https(SAN签发证书)

以上就是使用自签发的证书实现https的harbor服务器了文章来源地址https://www.toymoban.com/news/detail-418872.html

到了这里,关于部署harbor并实现https(SAN签发证书)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 签发SSL证书需要多长时间?了解证书签发过程

    SSL证书在今天的互联网环境中扮演着重要的角色,用于保护网站和用户之间的数据传输安全。然而,许多人对于SSL证书的签发时间有所困惑,签发 SSL证书 所需的时间取决于多个因素,包括证书验证类型、所选择的证书颁发机构以及是否选择加急处理选项。本文将详细介绍S

    2024年02月11日
    浏览(33)
  • 【Harbor Https】Harbor部署https并配置containerd拉取镜像

    新项目,要接手另一个k8s集群,那个集群是kubernates1.24的rke2版本,里面已经不用docker容器了,使用了containerd容器来生成pod,因此需要变化我们以前的docker使用方式。首先第一步需要把harbor的镜像由http更改为https。 这里我使用harbor安装的ip【10.38.199.203】地址来生成证书,也可

    2024年02月04日
    浏览(31)
  • K8s集群Harbor私有仓库部署+ssl证书申请

    首先打开ssl证书服务控制台 然后点击SSL证书—免费证书—立即购买 注意此证书只支持单域名,最多可免费申请20个,而且一个账号只有一次免费机会,证书有效期为一年 购买完免费证书后,然后创建自己域名的证书即可 下载(下载类型选择其他)我们申请的证书 上传到harbor所

    2024年01月15日
    浏览(29)
  • 在IIS服务器上安装SSL证书(2023配置启用HTTPS部署教程)内容来源SSL市场网

    https://www.sslmarket.com.cn/146.html

    2024年02月10日
    浏览(48)
  • 使用OpenSSL生成/签发证书步骤

    生成私钥和公钥: 2.私钥签名 对数据data.txt进行签名 3.公钥验签 生成自己的私钥文件(.key) 基于私钥生成证书请求文件(.csr) 将证书请求文件(.csr)提交给证书颁发机构(CA),CA会对提交的证书请求中的所有信息生成一个摘要,然后使用CA根证书对应的私钥进行加密,这就是所谓

    2024年02月03日
    浏览(29)
  • CA证书的签发流程详情

            CA证书是电子商务认证授权机构(CA, Certificate Authority),也称为电子商务认证中心,是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。         CA证书一般用于HTTPS服务中的SSL或TSL协议中

    2024年02月04日
    浏览(20)
  • Istio实战(十二)-Istio 延长自签发证书的有效期

            因为历史原因,Istio 的自签发证书只有一年的有效期。如果你选择使用 Istio 的自签发证书,就需要在它们过期之前订好计划进行根证书的更迭。根证书过期可能会导致集群范围内的意外中断。         我们认为每年更换根证书和密钥是一个安全方面的最佳实践

    2024年02月06日
    浏览(25)
  • Harbor内网离线安装使用HTTPS访问

    重要提醒:使用的是域名形式访问Harbor。通过https://harbor.top访问网址。 1、首先在自己windows电脑 “此磁盘C-Windows-System32-drivers-etc” 修改hosts文件 添加“ip harbor.top”例如:“172.33.33.33 harbor.top” 2、进入内网服务器 172.33.33.33 修改 harbor文件在/root/harbor/ 然后再次文件夹下创建

    2024年02月13日
    浏览(27)
  • 腾讯云https证书部署nginx

    域名在腾讯云申请的,直接去 登录 - 腾讯云 我的证书 下操作申请证书, 申请免费证书。 再到 一键https 下,去一键添加一下 cName,若不是腾讯的域名,要手工去加一下域名Cname解析。 之后,手工下载证书 *.zip,解压后,将对应的证书(nginx目录下)上传到 nginx目录下,再去改n

    2023年04月24日
    浏览(25)
  • window环境下https证书本地部署

    因为小程序要使用https的网址,本地localhost无法访问。为调试方便要使用https证书在公司局域网内访问。 1)在阿里云或其他域名管理申请域名(z.abc.com)https证书,注意记录值是你本地局域网的IP,例如:192.168.2.11,这个很重要; 2)   配制nginx下confnginx.conf下的文件 server {      

    2024年02月07日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包