Harbor2.11.1生成自签证和配置HTTPS访问

devtools/2024/11/25 17:11:35/
http://www.w3.org/2000/svg" style="display: none;">

文章目录

    • HTTPS的工作流程
    • 部署Harbor可参考上一篇文章
    • 生成自签证书
      • 1.修改/etc/hosts文件
      • 2.生成证书
        • a.创建存放证书路径
        • b.创建ca.key密钥
        • c.创建ca.crt
        • d.创建给Harbor服务器使用密钥 yunzhidong.harbor.com.key
        • e.创建给Harbor服务器使用证书签名请求文件 yunzhidong.harbor.com.csr
        • f.构建用于域名配置的 v3.ext 文件
        • g.生成客户端数字证书yunzhidong.harbor.com.crt
        • h.生成证书yunzhidong.harbor.com.cert
    • 配置证书
      • 编辑harbor.yml
      • 配置Docker证书

HTTPS的工作流程

HTTPS的工作流程
客户端发起连接请求:客户端(通常是浏览器)向服务器发送一个安全连接请求,使用HTTPS的URL或点击HTTPS链接触发。
服务器证书发送:服务器收到请求后,将自己的数字证书发送给客户端。证书中包含了服务器的公钥、数字签名和其他相关信息。
客户端验证证书:浏览器接收到服务器证书后,会进行一系列的验证步骤,包括验证证书是否由受信任的证书颁发机构签发,以及证书中的域名是否与目标服务器的域名相匹配。如果验证通过,客户端可以确定所连接的服务器是可信的。
密钥协商:一旦服务器证书被验证通过,客户端会生成一个随机的对称密钥,用于后续的数据加密和解密。该对称密钥通过服务器证书中的公钥进行加密,并发送给服务器。
通信加密:服务器使用其私钥解密客户端发送的对称密钥,并与客户端之间建立起一个加密的安全通道。从此之后,客户端和服务器之间的数据传输都会在此加密通道中进行,保证数据的机密性。
安全数据传输:在建立了安全通道后,客户端和服务器可以安全地传输数据了。数据在发送前,会使用对称密钥对数据进行加密,然后在接收端使用相同的对称密钥解密。
完整性检查:为了确保数据在传输过程中没有被篡改,HTTPS使用消息摘要函数进行完整性检查。接收方会对接收到的数据进行校验,并比对校验结果与发送方计算的结果是否相同。
通过上述流程,HTTPS保证了在传输过程中的数据加密、身份认证和完整性保护,提供了更安全可靠的网络通信。这使得敏感信息的传输、交易和共享在更加安全的环境下进行。

也就是说:我们介绍HTTPS,更多是在介绍后面这个S,也就是对HTTP的加密方式。

部署Harbor可参考上一篇文章

linux rocky 9.4部署和管理docker harbor私有源

生成自签证书

1.修改/etc/hosts文件

[root@harbor ~]# cat  /etc/hosts 
192.168.0.200  yunzhidong.harbor.com

这里我们使用yunzhidong.harbor.com 这个域名访问Harbor Web服务
https>https://i-blog.csdnimg.cn/direct/86b9f3928167498483bf8a14d1b952ef.png" alt="在这里插入图片描述" />

2.生成证书

a.创建存放证书路径
[root@harbor ~]# mkdir -pv /usr/local/ssl
[root@harbor ~]# cd /usr/local/ssl/

https>https://i-blog.csdnimg.cn/direct/73c8ae85a39a4ac39f852e80a90b47ea.png" alt="在这里插入图片描述" />

b.创建ca.key密钥
[root@harbor ssl]# openssl genrsa -out ca.key 4096
[root@harbor ssl]# ls
ca.key
[root@harbor ssl]# 

https>https://i-blog.csdnimg.cn/direct/bfc3f89cce1a490aa0d0f82914615595.png" alt="在这里插入图片描述" />

c.创建ca.crt

– 提示:可将下面信息修改成自己的信息

[root@harbor ssl]# openssl req -x509 -new -nodes -sha512 -days 365 -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=Harbor Root CA" -key ca.key  -out ca.crt
[root@harbor ssl]# ls
ca.crt  ca.key
[root@harbor ssl]# 

https>https://i-blog.csdnimg.cn/direct/f9e6110458e74363b231ed431d25f714.png" alt="在这里插入图片描述" />

harborcomkey_60">d.创建给Harbor服务器使用密钥 yunzhidong.harbor.com.key
提示:需要把yunzhidong.harbor.com 改成自己的域名,并且同hosts文件内相同
[root@harbor ssl]# openssl genrsa -out yunzhidong.harbor.com.key 4096
[root@harbor ssl]# ls
ca.crt  ca.key  yunzhidong.harbor.com.key
[root@harbor ssl]# 

https>https://i-blog.csdnimg.cn/direct/230f05055d2047ac826ecc9664784d37.png" alt="在这里插入图片描述" />

harborcomcsr_72">e.创建给Harbor服务器使用证书签名请求文件 yunzhidong.harbor.com.csr
[root@harbor ssl]# openssl req -sha512 -new   -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=yunzhidong.harbor.com"    -key yunzhidong.harbor.com.key    -out yunzhidong.harbor.com.csr
[root@harbor ssl]# 
[root@harbor ssl]# ls
ca.crt  ca.key  yunzhidong.harbor.com.csr  yunzhidong.harbor.com.key
[root@harbor ssl]# 

https>https://i-blog.csdnimg.cn/direct/df9b6c25274141868296de4b4be23f80.png" alt="在这里插入图片描述" />

f.构建用于域名配置的 v3.ext 文件

– 提示这里只需要修改DNS.1=域名

cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names[alt_names]
DNS.1=yunzhidong.harbor.com
EOF

https>https://i-blog.csdnimg.cn/direct/e1f5242dcf7340e5b6ef1aaca8774972.png" alt="在这里插入图片描述" />

harborcomcrt_101">g.生成客户端数字证书yunzhidong.harbor.com.crt
[root@harbor ssl]# openssl x509 -req -sha512 -days 3650   -extfile v3.ext     -CA ca.crt -CAkey ca.key -CAcreateserial     -in yunzhidong.harbor.com.csr     -out yunzhidong.harbor.com.crt

https>https://i-blog.csdnimg.cn/direct/c53fa3c504a941f597fc3d5049713641.png" alt="在这里插入图片描述" />

harborcomcert_108">h.生成证书yunzhidong.harbor.com.cert
[root@harbor ssl]# openssl x509 -inform PEM -in yunzhidong.harbor.com.crt -out yunzhidong.harbor.com.cert

执行好,步骤abcdefgh
会生成8个文件

ca.crt  ca.key  ca.srl  v3.ext  yunzhidong.harbor.com.crt  yunzhidong.harbor.com.csr  yunzhidong.harbor.com.key

https>https://i-blog.csdnimg.cn/direct/a7d482196fc6446eb98d9b28105cec37.png" alt="在这里插入图片描述" />

Harbor 启用https>https 需要ca.crt ,yunzhidong.harbor.com.key,yunzhidong.harbor.com.crt
Docker配置证书需要 ca.crt ,yunzhidong.com.key ,yunzhidong.harbor.com.cert
linux系统或者windows系统信任证书需要ca.crt

配置证书

harboryml_128">编辑harbor.yml

1.把hostname: yunzhidong.harbor.com 改成自己的域名
2.指定刚才证书存放路径

https>https:# https>https port for harbor, default is 443port: 443# The path of cert and key files for nginxcertificate: /usr/local/ssl/yunzhidong.harbor.crtprivate_key: /usr/local/ssl/yunzhidong.harbor.key

https>https://i-blog.csdnimg.cn/direct/66032b2cf8f04e8a9c35b8f18bd01c31.png" alt="在这里插入图片描述" />
3.[root@harbor harbor]# ./install.sh

https>https://i-blog.csdnimg.cn/direct/dcdf5410d0104c5189316c50ba4947ec.png" alt="在这里插入图片描述" />
https>https://i-blog.csdnimg.cn/direct/bd8dac1abcdc40589ca599fef15d55a1.png" alt="在这里插入图片描述" />
4.WEB验证
使用IP登录,自动跳转https>https登录
https>https://i-blog.csdnimg.cn/direct/7faa20f6f9e7438bb7487b15627feaf8.png" alt="在这里插入图片描述" />
5.将刚才生成的ca.crt证书拿到本地电脑安装证书
https>https://i-blog.csdnimg.cn/direct/24075685f244490b90d7201b22fc4e6e.png" alt="在这里插入图片描述" />https>https://i-blog.csdnimg.cn/direct/da9b06215f604d5fb719f2532cab19e0.png" alt="在这里插入图片描述" />
https>https://i-blog.csdnimg.cn/direct/dfd3cd6b2aa54f4384283483f07c4ef8.png" alt="在这里插入图片描述" />
C:\Windows\System32\drivers\etc\hosts,类似/etc/hosts
添加192.168.0.200 yunzhidong.harbor.com
https>https://i-blog.csdnimg.cn/direct/bc7a796759244ff8826f6131df2f3a77.png" alt="在这里插入图片描述" />
6.域名访问
https>https://i-blog.csdnimg.cn/direct/89364c38bd444d1a96c921c37262ee4a.png" alt="在这里插入图片描述" />
7.curl测试访问

[root@harbor harbor]# curl -i https>https://yunzhidong.harbor.com报错:
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: https>https://curl.se/docs/sslcerts.htmlcurl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.

https>https://i-blog.csdnimg.cn/direct/15fc56a3fa114ad4a7c7624047d9b14d.png" alt="在这里插入图片描述" />
报错原因是:linux 没有安装ca.crt证书或者docker没有添加证书,这里有两种办法解决。
或者我们先curl -k 跳过证书访问试下

[root@harbor harbor]# curl -i -k https>https://yunzhidong.harbor.com
HTTP/1.1 200 OK

https>https://i-blog.csdnimg.cn/direct/32675d104fba49b3a14c74e6e28eeb7a.png" alt="在这里插入图片描述" />8.linux 信任证书,不同linux 系统不同的文件目录
我这里是Rocky Linux release 9.4 (Blue Onyx)

[root@harbor harbor]# cat /etc/redhat-release 
Rocky Linux release 9.4 (Blue Onyx)

https>https://i-blog.csdnimg.cn/direct/3f253474afce42069afb91043c6962e5.png" alt="在这里插入图片描述" />
复制ca.crt证书到 /etc/pki/ca-trust/source/anchors/

[root@harbor harbor]# cp /usr/local/ssl/ca.crt /etc/pki/ca-trust/source/anchors/

然后执行信任操作

[root@harbor harbor]# update-ca-trust 

我们再次尝试 [root@harbor harbor]# curl -i https>https://yunzhidong.harbor.com
不再报错,如果还是不行,请重启Harbor和docker服务。

https>https://i-blog.csdnimg.cn/direct/ec16be6e56414b8a8c88e57bee07e3d5.png" alt="在这里插入图片描述" />
并且在为配置docker证书的情况下,依然能使用docker登录harbor

[root@harbor harbor]# docker login https>https://yunzhidong.harbor.com

https>https://i-blog.csdnimg.cn/direct/25fb0161e8a540bc9b25f6caef55dfa4.png" alt="在这里插入图片描述" />

9.取消linux 信任证书

[root@harbor harbor]# rm -rf /etc/pki/ca-trust/source/anchors/ca.crt 
[root@harbor harbor]# update-ca-trust 
[root@harbor harbor]# 

curl -i 无法正常登录,证明删除信任成功
https>https://i-blog.csdnimg.cn/direct/0b59197ec89341758751138fc76f45ab.png" alt="在这里插入图片描述" />

[root@harbor harbor]# docker-compose down 
[root@harbor harbor]# systemctl restart docker
[root@harbor harbor]# docker-compose up -d[root@harbor harbor]# docker login https>https://yunzhidong.harbor.com 也无法使用

https>https://i-blog.csdnimg.cn/direct/1da7e80b90344e95b1a821ca2dbf2a47.png" alt="在这里插入图片描述" />

配置Docker证书

10.配置Docker证书
https>https://goharbor.io/docs/2.11.0/install-config/configure-https>https/
此链接也有官方生成证书教程
https>https://i-blog.csdnimg.cn/direct/b84355ff85ad451086e1aa288e115ab8.png" alt="在这里插入图片描述" />
很明显,/etc/docker/certs.d/ 是存放docker证书的路径
所以我们创建此路径并把证书拷贝至此。

[root@harbor harbor]# ls /etc/docker/
daemon.json
[root@harbor harbor]# mkdir -pv /etc/docker/certs.d
mkdir: created directory '/etc/docker/certs.d'
[root@harbor harbor]# cd /etc/docker/certs.d/
[root@harbor certs.d]# ls

创建跟生成证书时和/etc/hosts 域名相同的目录

[root@harbor certs.d]# mkdir -pv yunzhidong.harbor.com
mkdir: created directory 'yunzhidong.harbor.com'
[root@harbor certs.d]# cd yunzhidong.harbor.com/
[root@harbor yunzhidong.harbor.com]# pwd
/etc/docker/certs.d/yunzhidong.harbor.com
[root@harbor yunzhidong.harbor.com]# 

https>https://i-blog.csdnimg.cn/direct/9a6faf8c880b4628aa3301ef0dbe298b.png" alt="在这里插入图片描述" />
https>https://i-blog.csdnimg.cn/direct/6931830a6e824529b30ff3ecabf75c27.png" alt="在这里插入图片描述" />拷贝证书

[root@harbor yunzhidong.harbor.com]# ls
[root@harbor yunzhidong.harbor.com]# cp /usr/local/ssl/ca.crt /etc/docker/certs.d/yunzhidong.harbor.com/
[root@harbor yunzhidong.harbor.com]# cp /usr/local/ssl/yunzhidong.harbor.com.cert /etc/docker/certs.d/yunzhidong.harbor.com/
[root@harbor yunzhidong.harbor.com]# cp /usr/local/ssl/yunzhidong.harbor.com.key /etc/docker/certs.d/yunzhidong.harbor.com/
[root@harbor yunzhidong.harbor.com]# ls
ca.crt  yunzhidong.harbor.com.cert  yunzhidong.harbor.com.key
[root@harbor yunzhidong.harbor.com]# 

重启docker服务

[root@harbor yunzhidong.harbor.com]# systemctl restart docker
[root@harbor yunzhidong.harbor.com]# docker login https>https://yunzhidong.harbor.com
Authenticating with existing credentials...
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https>https://docs.docker.com/engine/reference/commandline/login/#credential-storesLogin Succeeded
[root@harbor yunzhidong.harbor.com]# 

https>https://i-blog.csdnimg.cn/direct/ae71653512ca4240a4ec48f954d76d65.png" alt="在这里插入图片描述" />
并且 curl -i 无法登录,证明docker证书生效

[root@harbor yunzhidong.harbor.com]# curl -i https>https://yunzhidong.harbor.com
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: https>https://curl.se/docs/sslcerts.htmlcurl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.

https>https://i-blog.csdnimg.cn/direct/d1dd89cd9197424d9a785f976c7c4850.png" alt="在这里插入图片描述" />
现在全球都在推进 SSL 安全加密,越来越多的网站采用了 HTTPS 访问,没有启用 HTTPS 的网站可能即将在 浏览器 里禁止访问了,刚刚我没装ca.crt证书在本地电脑上,压根不能使用域名web访问。


http://www.ppmy.cn/devtools/136889.html

相关文章

C51数字时钟/日历---LCD1602液晶显示屏

题目要求&#xff1a; 数字电子日历/时钟设计 设计一个基于MCS51的电子日历和时钟。 基本要求 &#xff08;1&#xff09; 可通过按键在日历和时间之间切换显示&#xff1b; &#xff08;2&#xff09; 可由按键调整日期和时间 &#xff08;3&#xff09; 可整点报时&#x…

Group Convolution(分组卷积)

分组卷积的优点&#xff1a; 减少参数数量&#xff1a; 在分组卷积中&#xff0c;每个分组只与一部分输入通道进行卷积运算&#xff0c;这意味着模型的参数数量会减少。例如&#xff0c;如果一个卷积层有8个输入通道和8个输出通道&#xff0c;且不使用分组&#xff0c;那么将有…

Java技术分享

剖析equals方法 1、对于Object来说&#xff0c;其equals()方法底层实现就是""&#xff0c;都是比较对象的引用是否相等&#xff0c;下为JDK源码。 Object c 1; Object d 1; boolean equals c.equals(d);public boolean equals(Object obj) {return (this obj);…

基于Java Springboot个人健康管理网站

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA/eclipse 数据…

Linux下X11协议理解

概念 X client&#xff1a;X客户端。通常是各类GUI应用&#xff0c;如Firefox、xterm、xclock等screen&#xff1a;逻辑概念上的屏幕。可以是一台物理显示器、多台物理显示器或者是VNC虚拟显示器X client与X server的通信方式有三种&#xff1a;TCP&#xff0c;unix socket和通…

Jmeter中的定时器

4&#xff09;定时器 1--固定定时器 功能特点 固定延迟&#xff1a;在每个请求之间添加固定的延迟时间。精确控制&#xff1a;可以精确控制请求的发送频率。简单易用&#xff1a;配置简单&#xff0c;易于理解和使用。 配置步骤 添加固定定时器 右键点击需要添加定时器的请求…

解锁PPTist的全新体验:Windows系统环境下本地部署与远程访问

文章目录 前言1. 本地安装PPTist2. PPTist 使用介绍3. 安装Cpolar内网穿透4. 配置公网地址5. 配置固定公网地址 前言 在Windows系统环境中&#xff0c;如何本地部署开源在线演示文稿应用PPTist&#xff0c;并实现远程访问&#xff1f;本文将为您提供详细的部署和配置指南。 P…

深入探索JMeter bin目录中的Properties文件:优化性能测试的关键

引言 在现代软件开发中&#xff0c;性能测试是确保应用质量和用户体验的重要环节。Apache JMeter作为一款流行的开源性能测试工具&#xff0c;提供了丰富的功能来模拟各种用户行为和负载情况。本文将深入探讨JMeter中的Properties&#xff08;属性&#xff09;功能&#xff0c…