仰天大笑出门去,我辈岂是蓬蒿人。这篇文章主要讲述企业内网如何搭建安全的Harbor服务?(超详细)相关的知识,希望能为你提供帮助。
hallo!我是李大白,一名容器运维工程师,今天分享下企业内网环境下如何搭建安全的Harbor服务器。
更多Harbor的知识,可看我博客主页。
1 部署环境
2 Harbor的5种安装方式
每种安装方式都可以实现Habor的高可用(高可用方案官方建议使用kubernetes的安装方式,其他方式官方并不维护),防止单点故障,楼主本篇分享的是【?离线安装?】的部署方式
3
相关软件包下载因为是企业内网环境,相关的安装包需要用自己的电脑下载相关软件,然后上传到部署的主机上。
3.1、dockeran安装包下载
19.03.8版本,封装了相关的依赖包。
链接:https://pan.baidu.com/s/1NbM6mlnkkch9bUa67ONICw
提取码:vgb5
3.2、docker-compose下载
docker-compose的?版本要在1.18.0以上?,否则安装会报错,本处下载2.2.3版本。
wget https://github.com/docker/compose/releases/download/v2.2.3/docker-compose-linux-x86_64
3.3、Harbor离线安装包(官网下载)
官方下载地址:
https://github.com/goharbor/harbor/releases
选择带有??offline?的安装包进行下载。?
4 安装docker-ce和docker-compose
4.1、使用离线安装包安装docker并启动docker服务
# tar zxvf docker-ce-rpm.tar.gz
# cd docker-ce-rpm/
# yum install-y./*.rpm
# systemctl enable--now docker
# systemctl statusdocker
4.2 安装docker-compose
# mv docker-compose-linux-x86_64/usr/local/bin/docker-compose
# ls-l /usr/local/bin/docker-compose
-rw-r--r-- 1 root root 24707072 1月7 16:08 /usr/local/bin/docker-compose
# chmod +x /usr/local/bin/docker-compose
# docker-compose --version
Docker Compose version v2.2.3
5 配置内核参数5.1 临时加载内核模板
# modprobe br_netfilter
5.2 配置内核参数并生效
# cat >
/etc/sysctl.conf <
<
EOF
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
# sysctl -p
?net.ipv4.ip_forward=1?
:开启路由转发,不配置该参数,当主机重启后,服务状态正常,却无法访问到服务器。
6 配置安全访问证书默认情况下,Harbor 不附带证书。可以在没有安全性的情况下部署 Harbor,以便您可以通过 HTTP 连接到它。在生产环境中,始终使用 HTTPS。如果启用 Content Trust with Notary 以正确签署所有图像,则必须使用HTTPS。
要配置 HTTPS,就必须要创建 SSL 证书。可以使用受信任的第三方 CA 签署的证书,也可以使用自签名证书。本篇文章介绍如何使用cfssl创建 CA,以及如何使用 CA 签署服务器证书和客户端证书。
有条件的企业也可使用购买的证书使用。
6.1 cfssl工具概述
CFSSL是CloudFlare公司提供的PKI/TLS工具,使用Go语言开发。开源并支持Windows、Linux、macos系统。
(1)cfssl有以下几个工具集:
(2)证书文件说明
(3)cfssl命令常用参数说明
6.2 下载cfssl证书制作工具
官方下载地址:??https://github.com/cloudflare/cfssl/releases??
# wget https://github.com/cloudflare/cfssl/releases/download/v1.6.0/cfssl_1.6.0_linux_amd64 \\
-O/usr/local/bin/cfssl
# wget https://github.com/cloudflare/cfssl/releases/download/v1.6.0/cfssljson_1.6.0_linux_amd64 \\
-O/usr/local/bin/cfssljson
# wget https://github.com/cloudflare/cfssl/releases/download/v1.6.0/cfssl-certinfo_1.6.0_linux_amd64\\
-O/usr/local/bin/cfssl-certinfo
?注:?
将下载好的cfssl、cfssljson、cfssl-certinfo工具移动并改名到/usr/local/bin/下,并给可执行权限。
6.3
生成并修改CA默认配置文件
CA为证书机构,然后该机构可给客户端颁发证书。
# cfssl print-defaultsconfig >
ca-config.json
# vim ca-config.json
"signing":
"default":
"expiry": "87600h"
,
"profiles":
"harbor":
"expiry": "87600h",
"usages": [
"signing",
"key encipherment",
"server auth",
"client auth"
]
expiry:证书过期时间(单位:h);
profiles.harbor:为服务使用该配置文件颁发证书的配置模块;
signing:签署,表示该证书可用于签名其它证书;生成的 ca.pem 证书中 CA=TRUE;
key encipherment:密钥加密;
profiles:指定了不同角色的配置信息;可以定义多个 profiles,分别指定不同的过期时间、使用场景等参数;后续在签名证书时使用某个 profile。
server auth:服务器身份验证;表示 client 可以用该 CA 对 server 提供的证书进行验证;
client auth:客户端身份验证;表示 server 可以用该 CA 对 client 提供的证书进行验证;
6.4
生成并修改默认csr请求文件
# cfsslprint-defaults csr>
ca-csr.json
# vim ca-csr.json
"CN": "harbor",
"hosts": [
"127.0.0.1",
"192.168.2.81"
],
"key":
"algo": "rsa",
"size": 2048
,
"names": [
"C": "CN",
"ST": "BeiJing",
"L": "BeiJing"
]
hosts:包含的授权范围,不在此范围的的节点或者服务使用此证书就会报证书不匹配错误,证书如果不包含可能会出现无法连接的情况,此处需要改为本机的IP地址;
Key: 指定使用的加密算法,一般使用rsa非对称加密算法(algo:rsa;size:2048)
CN:Common Name,kube-apiserver 从证书中提取该字段作为请求的用户名 (User Name);浏览器使用该字段验证网站是否合法;CN是域名,也就是你现在使用什么域名就写什么域名
O:Organization,kube-apiserver 从证书中提取该字段作为请求用户所属的组 (Group);
6.5 初始化CA
#cfsslgencert-initcaca-csr.json|cfssljson-bareca
# ls
anaconda-ks.cfgca-config.jsonca.csrca-csr.jsonca-key.pemca.pem
会生成ca-key.pem、ca.pem两个文件,ca-key.pem、ca.pem这两个是CA相关的证书,通过这个CA来签署服务端证书。
6.6 生成服务器证书
(1)创建并修改服务端证书请求文件# cfsslprint-defaults csr >
harbor-csr.json
# vim harbor-csr.json
"CN": "harbor",
"hosts": [],
"key":
"algo": "rsa",
"size": 2048
,
"names": [
"C": "CN",
"ST": "BeiJing",
"L": "BeiJing"
]
【企业内网如何搭建安全的Harbor服务((超详细))】<
推荐阅读
- Android Studio实现QQ的注册登录和好友列表界面的跳转
- 番外篇客户端开发(Electron)无源码如何做汉化
- 客户端开发(Electron)加入Vue2.6
- 沙龙(如何使信息系统更加稳定)
- 前端函数式 -- 6. 组合
- arm系统的sshd server——dropbear及frp内网穿透
- 前端函数式 -- 4. 闭包
- Haror镜像仓库的几种角色都有哪些权限()
- 必看!盘点一下Linux中firewalld防火墙的相关设置