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

文章目录

    • 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服务
在这里插入图片描述

2.生成证书

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

在这里插入图片描述

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

在这里插入图片描述

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]# 

在这里插入图片描述

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]# 

在这里插入图片描述

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]# 

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

Harbor 启用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

配置证书

编辑harbor.yml

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

https:
  # https port for harbor, default is 443
    port: 443
  # The path of cert and key files for nginx
  certificate: /usr/local/ssl/yunzhidong.harbor.crt
  private_key: /usr/local/ssl/yunzhidong.harbor.key

在这里插入图片描述
3.[root@harbor harbor]# ./install.sh

在这里插入图片描述
在这里插入图片描述
4.WEB验证
使用IP登录,自动跳转https登录
在这里插入图片描述
5.将刚才生成的ca.crt证书拿到本地电脑安装证书
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
C:\Windows\System32\drivers\etc\hosts,类似/etc/hosts
添加192.168.0.200 yunzhidong.harbor.com
在这里插入图片描述
6.域名访问
在这里插入图片描述
7.curl测试访问

[root@harbor harbor]# curl -i https://yunzhidong.harbor.com

报错:
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: https://curl.se/docs/sslcerts.html

curl 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.

在这里插入图片描述
报错原因是:linux 没有安装ca.crt证书或者docker没有添加证书,这里有两种办法解决。
或者我们先curl -k 跳过证书访问试下

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

在这里插入图片描述8.linux 信任证书,不同linux 系统不同的文件目录
我这里是Rocky Linux release 9.4 (Blue Onyx)

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

在这里插入图片描述
复制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://yunzhidong.harbor.com
不再报错,如果还是不行,请重启Harbor和docker服务。

在这里插入图片描述
并且在为配置docker证书的情况下,依然能使用docker登录harbor

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

在这里插入图片描述

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 无法正常登录,证明删除信任成功
在这里插入图片描述

[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://yunzhidong.harbor.com 也无法使用

在这里插入图片描述

配置Docker证书

10.配置Docker证书
https://goharbor.io/docs/2.11.0/install-config/configure-https/
此链接也有官方生成证书教程
在这里插入图片描述
很明显,/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]# 

在这里插入图片描述
在这里插入图片描述拷贝证书

[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://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://docs.docker.com/engine/reference/commandline/login/#credential-stores

Login Succeeded
[root@harbor yunzhidong.harbor.com]# 

在这里插入图片描述
并且 curl -i 无法登录,证明docker证书生效

[root@harbor yunzhidong.harbor.com]# curl -i https://yunzhidong.harbor.com
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: https://curl.se/docs/sslcerts.html

curl 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.

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/921991.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【深度学习之二】正则化函数(weight decay, dropout, label smoothing, and etc)详解,以及不同的函数适用的场景

在深度学习中正则化函数的重要性不言而喻&#xff0c;今天主要总结一些当前常用的一些正则化函数 在深度学习中&#xff0c;正则化&#xff08;Regularization&#xff09;是一种防止模型过拟合的技术。过拟合指的是模型在训练数据上表现很好&#xff0c;但在未见过的测试数据…

uni-app 修改复选框checkbox选中后背景和字体颜色

编写css&#xff08;注意&#xff1a;这个样式必须写在App.vue里&#xff09; /* 复选框 */ /* 复选框-圆角 */ checkbox.checkbox-round .wx-checkbox-input, checkbox.checkbox-round .uni-checkbox-input {border-radius: 100rpx; } /* 复选框-背景颜色 */ checkbox.checkb…

Ngrok实现内网穿透(Windows)

Ngrok实现内网穿透&#xff08;Windows&#xff09; 什么是内网穿透&#xff0c;内网穿透有什么用 内网穿透&#xff08;NAT traversal&#xff09;是一种技术手段&#xff0c;使得位于内网或防火墙后面的设备能够通过外网访问。例如&#xff0c;如果你的计算机、服务器等设备…

Simulink中Model模块的模型保护功能

在开发工作过程中&#xff0c;用户为想要知道供应商的开发能力&#xff0c;想要供应商的模型进行测试。面对如此要求&#xff0c;为了能够尽快拿到定点项目&#xff0c;供应商会选择一小块算法或是模型以黑盒的形式供客户测试。Simulink的Model模块除了具有模块引用的功能之外&…

Linux内核USB2.0驱动框架分析--USB包

一&#xff0c; 包的组成 每个包都由SOP&#xff08;包起始域&#xff09;、SYNC&#xff08;同步域&#xff09;、Packet Content&#xff08;包内容&#xff09;、EOP&#xff08;包结束域&#xff09;四部分组成&#xff0c;其中SOP、SYNC、EOP为所有包共有的域&#xff0c…

STM32F4----ADC模拟量转换成数字量

STM32F4----ADC模拟量转换成数字量 基本原理 当需要测量和记录外部电压的变化&#xff0c;或者根据外部电压的变化量来决定是否触发某个动作时&#xff0c;我们可以使用ADC&#xff08;模拟—数字转换器&#xff09;功能。这个功能可以将模拟的电压信号转换为数字信号&#x…

大数据学习18之Spark-SQL

1.概述 1.1.简介 Spark SQL 是 Apache Spark 用于处理结构化数据的模块。 1.2.历史 1.2.1.Shark Hadoop诞生初期&#xff0c;Hive是唯一在Hadoop上运行的SQL-on-Hadoop工具&#xff0c;MR的中间计算过程产生了大量的磁盘落地操作&#xff0c;消耗了大量的I/O&#xff0c;降低…

医学AI公开课·第一期|Machine LearningTransformers in Med AI

小罗碎碎念 从这周开始&#xff0c;我计划每个周末录一个视频&#xff0c;分享一些医学人工智能领域的进展。 作为第一期视频&#xff0c;我打算介绍一下机器学习和Transformer在医学AI领域中的应用。 为了准备这期视频&#xff0c;总共做了24页PPT&#xff08;三部分内容&…

小白投资理财 - 解读威廉指标 WR

小白投资理财 - 解读威廉指标 WR WR 指标WR 指标特点WR 指标解读WR 与其他指标的结合实战案例&#xff1a;WR 计算WR 的优缺点WR 和 Williams Fractals 的主要区别总结 上篇《小白投资理财 - 解读威廉分形指标 Williams Fractals》&#xff0c;今天我们来了解另外一个威廉指标 …

前端速通(HTML)

1. HTML HTML基础&#xff1a; 什么是HTML&#xff1f; 超文本&#xff1a; "超文本"是指通过链接连接不同网页或资源的能力。HTML支持通过<a>标签创建超链接&#xff0c;方便用户从一个页面跳转到另一个页面。 标记语言&#xff1a; HTML使用一组预定义的标签…

电商一件发货软件闲管家使用教程

闲鱼闲管家是一款专为闲鱼卖家设计的电脑版工作台&#xff0c;旨在帮助卖家更高效地管理其在闲鱼平台上的业务。以下是关于闲鱼闲管家的一些主要特点和功能&#xff1a; 主要特点&#xff1a; 多账号管理&#xff1a;支持同时管理多达30个闲鱼账号&#xff0c;方便大型卖家或…

第一个autogen与docker项目

前提条件&#xff1a;在windows上安装docker 代码如下&#xff1a; import os import autogen from autogen import AssistantAgent, UserProxyAgentllm_config {"config_list": [{"model": "GLM-4-Plus","api_key": "your api…

JavaEE 【知识改变命运】02 多线程(1)

文章目录 线程是什么&#xff1f;1.1概念1.1.1 线程是什么&#xff1f;1.1.2 为什么要有线程1.1.3 进程和线程的区别1.1.4 思考&#xff1a;执行一个任务&#xff0c;是不是创建的线程或者越多是不是越好&#xff1f;&#xff08;比如吃包子比赛&#xff09;1.1.5 ) Java 的线程…

LeetCode 力扣 热题 100道(八)相交链表(C++)

给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 图示两个链表在节点 c1 开始相交&#xff1a; 题目数据 保证 整个链式结构中不存在环。 注意&#xff0c;函数返回结果后&…

全面解析 JMeter 后置处理器:概念、工作原理与应用场景

在性能测试中&#xff0c;Apache JMeter是一个非常流行的工具&#xff0c;它不仅能够模拟大量用户进行并发访问&#xff0c;还提供了丰富的扩展机制来满足各种复杂的测试需求。后置处理器&#xff08;Post-Processor&#xff09;是JMeter中非常重要的组件之一&#xff0c;用于在…

java八股-SpringCloud微服务-Eureka理论

文章目录 SpringCloud架构Eureka流程Nacos和Eureka的区别是&#xff1f;CAP定理Ribbon负载均衡策略自定义负载均衡策略如何实现&#xff1f;本章小结 SpringCloud架构 Eureka流程 服务提供者向Eureka注册服务信息服务消费者向注册中心拉取服务信息服务消费者使用负载均衡算法挑…

每天五分钟机器学习:支持向量机数学基础之超平面分离定理

本文重点 超平面分离定理(Separating Hyperplane Theorem)是数学和机器学习领域中的一个重要概念,特别是在凸集理论和最优化理论中有着广泛的应用。该定理表明,在特定的条件下,两个不相交的凸集总可以用一个超平面进行分离。 定义与表述 超平面分离定理(Separating Hy…

day05(单片机高级)PCB基础

目录 PCB基础 什么是PCB&#xff1f;PCB的作用&#xff1f; PCB的制作过程 PCB板的层数 PCB设计软件 安装立创EDA PCB基础 什么是PCB&#xff1f;PCB的作用&#xff1f; PCB&#xff08;Printed Circuit Board&#xff09;&#xff0c;中文名称为印制电路板&#xff0c;又称印刷…

电脑自动关机时间如何定?Wise Auto Shutdown 设置关机教程

在日常使用电脑的过程中&#xff0c;有时我们需要让电脑在特定的时间自动关机&#xff0c;比如在下载大文件完成后、执行长时间的任务结束时&#xff0c;或者只是单纯想在某个预定时间让电脑自动关闭以节省能源。这时候&#xff0c;Wise Auto Shutdown 这款软件就能派上大用场了…

Lucene(2):Springboot整合全文检索引擎TermInSetQuery应用实例附源码

前言 本章代码已分享至Gitee: https://gitee.com/lengcz/springbootlucene01 接上文。Lucene(1):Springboot整合全文检索引擎Lucene常规入门附源码 如何在指定范围内查询。从lucene 7 开始&#xff0c;filter 被弃用&#xff0c;导致无法进行调节过滤。 TermInSetQuery 指定…