网站首页 > 技术教程 正文
之前安装的harbor都是基于http,需要修改docker的/etc/docker/daemon.json文件,新增insecure-registries配置,这样又需要重启下docker服务了。为了减少对正在运行的容器服务影响,我们可以配置harbor支持https来解决。
以下内容大部分来自harbor的官方文档的参考。Harbor https证书可以使用由受信任的第三方CA签名的证书,也可以使用自签名证书。
https://goharbor.io/docs/2.0.0/install-config/configure-https/
本文我们参考官方文档,采用openssl生成自签名证书
准备工作
1.harbor离线包下载
wget https://github.com/goharbor/harbor/releases/download/v2.1.0/harbor-offline-installer-v2.1.0.tgz
2.安装docker和docker-compose
略。。。
3.检查下主机hosts添加下主机名的解析,harbor域名本机ip解析(或者你加入dns)
证书生成
1.生成CA证书私钥
openssl genrsa -out ca.key 4096
2.生成CA证书
openssl req -x509 -new -nodes -sha512 -days 3650 \
-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=yourdomain.com" \
-key ca.key \
-out ca.crt
3.生成服务器证书私钥
openssl genrsa -out yourdomain.com.key 4096
4.生成服务器证书签名请求(CSR)
openssl req -sha512 -new \
-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=yourdomain.com" \
-key yourdomain.com.key \
-out yourdomain.com.csr
5.生成一个x509 v3扩展文件
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1=yourdomain.com
DNS.2=yourdomain
DNS.3=hostname
EOF
6.使用该v3.ext文件为您的Harbor主机生成证书
openssl x509 -req -sha512 -days 3650 \
-extfile v3.ext \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-in yourdomain.com.csr \
-out yourdomain.com.crt
7.分发证书给harbor使用
cp yourdomain.com.crt /data/cert/
cp yourdomain.com.key /data/cert/
8.转换yourdomain.com.crt为yourdomain.com.cert,供Docker使用
Docker守护程序将.crt文件解释为CA证书,并将.cert文件解释为客户端证书。
openssl x509 -inform PEM -in yourdomain.com.crt -out yourdomain.com.cert
9.将服务器证书,密钥和CA文件复制到Harbor主机上的Docker证书文件夹中
cp yourdomain.com.cert /etc/docker/certs.d/yourdomain.com/
cp yourdomain.com.key /etc/docker/certs.d/yourdomain.com/
cp ca.crt /etc/docker/certs.d/yourdomain.com/
10.需要在操作系统级别信任证书(重要)
红帽系列(centos)
cp yourdomain.com.crt /etc/pki/ca-trust/source/anchors/yourdomain.com.crt
update-ca-trust
Ubuntu:
cp yourdomain.com.crt /usr/local/share/ca-certificates/yourdomain.com.crt
update-ca-certificates
11.重启docker服务
systemctl restart docker.service
步骤比较繁多,写了一个简单的自签名证书生成脚本
以下脚本以reg.koudai.com为例生成证书,并分发到harbor和docker
#!/bin/bash
# 直接在该目录下操作生成证书,正好供harbor.yml使用
mkdir -p /data/cert
cd /data/cert
openssl genrsa -out ca.key 4096
openssl req -x509 -new -nodes -sha512 -days 3650 -subj "/C=CN/ST=Shanghai/L=Shanghai/O=example/OU=Personal/CN=reg.koudai.com" -key ca.key -out ca.crt
openssl genrsa -out reg.koudai.com.key 4096
openssl req -sha512 -new -subj "/C=CN/ST=Shanghai/L=Shanghai/O=example/OU=Personal/CN=reg.koudai.com" -key reg.koudai.com.key -out reg.koudai.com.csr
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
# 参考上文第5步的说明
[alt_names]
DNS.1=reg.koudai.com
DNS.2=koudai
DNS.3=gfs
EOF
openssl x509 -req -sha512 -days 3650 -extfile v3.ext -CA ca.crt -CAkey ca.key -CAcreateserial -in reg.koudai.com.csr -out reg.koudai.com.crt
openssl x509 -inform PEM -in reg.koudai.com.crt -out reg.koudai.com.cert
# trust the certificate at the OS level
cp reg.koudai.com.crt /etc/pki/ca-trust/source/anchors/reg.koudai.com.crt
update-ca-trust
# 复制证书到docker目录下
mkdir -p /etc/docker/certs.d/reg.koudai.com
cp /data/cert/reg.koudai.com.cert /etc/docker/certs.d/reg.koudai.com
cp /data/cert/reg.koudai.com.key /etc/docker/certs.d/reg.koudai.com
cp /data/cert/ca.crt /etc/docker/certs.d/reg.koudai.com
# 重启docker服务
systemctl restart docker.service
配置harbor.yml
1.解压harbor离线安装包到/usr/local下
tar xvf harbor-offline-installer-v2.1.0.tgz -C /usr/local/
2.修改harbor.yml文件
[root@gfs harbor]# cat harbor.yml
# Configuration file of Harbor
# The IP address or hostname to access admin UI and registry service.
# DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
hostname: reg.koudai.com
# http related config
http:
# port for http, default is 80. If https enabled, this port will redirect to https port
port: 80
# https related config
https:
# https port for harbor, default is 443
port: 443
# The path of cert and key files for nginx
certificate: /data/cert/reg.koudai.com.crt
private_key: /data/cert/reg.koudai.com.key
改这几行就行了。
然后执行docker-compose文件生成脚本,直接在当前目录下执行
./prepare # 生成docker-compose文件
docker-compose up -d # 启动docker-compose
验证
自己电脑加下hosts解析,然后在浏览器打开https://reg.koudai.com,由于是自签名的忽略下告警,继续就可以打开harbor
服务器上docker login验证。直接在服务器执行docker login reg.koudai.com ,输入你配置的用户名和密码即可,或者直接使用harbor默认的用户名和密码(这里仅仅是测试,harbor默认的密码,配置文件里未修改)用户名:admin 密码:Harbor12345
猜你喜欢
- 2024-10-11 从零开始搭建HTTPS服务(20台机小型网吧搭建无盘系统教程从零开始)
- 2024-10-11 LNMP环境(nginx)安装SSL安全证书,全站开启HTTPS访问
- 2024-10-11 ubuntu,添加并使用https(ubuntu 添加环境变量)
- 2024-10-11 https免费证书获取(免费https证书地址栏显示不安全)
- 2024-10-11 如何在HAProxy LOAD_BALANCER上设置SSL-HTTPS?
- 2024-10-11 用Https方式访问Harbor-1.9版本(直接访问https://www.muoujiejie.com)
- 2024-10-11 支付宝、微信、QQ 收款二维码三合一
- 2024-09-21 Nginx鉴权,验证token(nginx 验证用户凭据)
- 2024-09-21 使用cert-manager实现Ingress https--详解
- 2024-09-21 一个命令,让你的网站支持https(这是一个命令,斯塔纳的进攻是个命令德语怎么说)
你 发表评论:
欢迎- 最近发表
-
- Linux新手必看:几种方法帮你查看CPU核心数量
- linux基础命令之lscpu命令(linux中ls命令的用法)
- Linux lscpu 命令使用详解(linux常用ls命令)
- 如何查询 Linux 中 CPU 的数量?这几个命令要知道!
- 在linux上怎么查看cpu信息(linux如何查看cpu信息)
- 查看 CPU 的命令和磁盘 IO 的命令
- 如何在CentOS7上改变网卡名(centos怎么改网卡名字)
- 网工必备Linux网络管理命令(网工必备linux网络管理命令是什么)
- Linux 网络命令知多少(linux 网络 命令)
- Linux通过命令行连接wifi的方式(linux命令行连接无线网)
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)