当前位置: 首页 > news >正文

通过HTTPS访问Harbor2.13.1 的配置

1.环境

操作系统版本:Ubuntu 24.04.2 LTS

openssl的版本:3.0.15

Harbor版本:2.13.1  

2.说明

   默认情况下,Harbor不附带证书。可以在没有安全性的情况下部署Harbor,这样您就可以通过HTTP连接到它。然而,只有在没有连接到外部互联网的测试或开发环境中,使用HTTP才是可接受的。在非测试环境中使用HTTP会使您面临中间人攻击。在生产环境中,始终使用HTTPS。

    要配置HTTPS,您必须创建SSL证书。您可以使用由受信任的第三方CA签名的证书,也可以使用自签名证书。下面介绍如何使用OpenSSL创建CA,以及如何使用CA对服务器证书和客户端证书进行签名。

3生成证书颁发机构证书

在生产环境中,您应该从CA获取证书。在测试或开发环境中,可以生成自己的CA。

​​​​​​​3.1生成CA证书私钥

使用 OpenSSL 生成一个 RSA 算法的私钥文件,并将其保存为 ca.key 文件。

openssl genrsa -out ca.key 4096

参数

含义

openssl genrsa

使用 OpenSSL 的 genrsa 子命令来生成一个 RSA 私钥

-out ca.key

将生成的私钥输出到文件 ca.key 中

4096

指定密钥长度为 4096 位。这是目前推荐的安全强度,比默认的 2048 位更安全

​​​​​​​3.2查看私钥内容

openssl rsa -in ca.key -text -noout

这将显示模数(modulus)、公钥指数(public exponent)等详细信息。

​​​​​​​3.3生成CA自签名证书

调整-subj选项中的值以反映您的组织。如果使用FQDN连接Harbor主机,则必须将其指定为通用名称(CN)属性。

openssl req -x509 -new -nodes -sha512 -days 3650 \

 -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=MyPersonal Root CA" \

 -key ca.key \

 -out ca.crt

参数

含义

openssl req

表示使用 OpenSSL 的 req 子命令,用于处理 X.509 证书请求(CSR)和生成自签名证书

-x509

直接输出一个 自签名证书(而不是生成 CSR),常用于创建 CA 证书

-new

生成一个新的证书请求信息(虽然这里生成的是自签名证书,但仍然需要这些信息)

-nodes

不加密私钥(no DES),表示生成时不使用密码保护私钥文件。如果不加这个参数,OpenSSL 会提示你输入密码来加密私钥

-sha512

指定使用 SHA-512 算法进行签名,安全性更高

-days 3650

设置证书有效期为 3650 天(即 10 年)

-subj "..."

指定证书的主题信息(Subject DN),包括国家、组织、通用名等字段

-key ca.key

使用指定的私钥文件 ca.key 来签署这个证书

-out ca.crt

输出生成的证书文件为 ca.crt

/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=MyPersonal Root CA

字段

含义

示例

/C

Country(国家代码)

CN = China

/ST

State or Province(省份)

Beijing

/L

Locality(城市)

Beijing

/O

Organization(组织名称)

example

/OU

Organizational Unit(部门)

Personal

/CN

Common Name(通用名)

MyPersonal Root CA

​​​​​​​3.4查看证书内容

openssl x509 -in ca.crt -text -noout

​​​​​​​4生成服务器证书

证书通常包含.crt文件和.key文件,例如192.0.1.208.crt和192.0.1.208.key。

​​​​​​​4.1生成私钥

openssl genrsa -out 192.0.1.208.key 4096

​​​​​​​4.2生成证书签名请求(CSR)

调整-subj选项中的值以反映您的组织。如果使用FQDN连接Harbor主机,则必须将其指定为通用名称(CN)属性,并在密钥和CSR文件名中使用它。

openssl req -sha512 -new \    -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=192.0.1.208" \    -key 192.0.1.208.key \    -out 192.0.1.208.csr

​​​​​​​4.3生成x509 v3扩展文件。

无论您是使用FQDN还是IP地址连接到Harbor主机,都必须创建此文件,以便为Harbor主机生成符合主题可选名称(SAN)和x509 v3扩展要求的证书。替换DNS条目以反映您的域。

cat > v3.ext <<-EOF

authorityKeyIdentifier=keyid,issuer

basicConstraints=CA:FALSE

keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment

extendedKeyUsage = serverAuth

subjectAltName = @alt_names

[alt_names]

DNS.1=hostname

IP.1 = 192.0.1.208

EOF

​​​​​​​4.4使用v3.ext文件为您的Harbor主机生成证书

将CSR和CRT文件名中的192.0.1.208替换为Harbor主机IP。

openssl x509 -req -sha512 -days 3650 \    -extfile v3.ext \    -CA ca.crt -CAkey ca.key -CAcreateserial \    -in 192.0.1.208.csr \    -out 192.0.1.208.crt

​​​​​​​5.向Harbor和Docker提供证书

生成ca.crt、192.0.1.208.crt和192.0.1.208密钥文件后,您必须将它们提供给Harbor和Docker,并重新配置Harbor以使用它们。

​​​​​​​5.1将服务器证书和密钥复制到Harbor主机上的certificates文件夹中。

    cp 192.0.1.208.crt /app/harbor/data/secret/cert/server.crt

cp 192.0.1.208.key /app/harbor/data/secret/cert/server.key

   chown -R 10000:10000 /app/harbor/data/secret/cert

注:

具体拷贝到哪个目录下,有docker-compose.yml决定

为什么要把192.0.1.208改成server。是由common/config/nginx/nginx.conf决定

​​​​​​​5.2192.0.1.208.crt转换为192.0.1.208.cert,供Docker使用。

Docker守护进程将.crt文件解释为CA证书,将.cert文件解释为客户端证书。

openssl x509 -inform PEM -in 192.0.1.208.crt -out 192.0.1.208.cert

​​​​​​​5.3将服务器证书、密钥和CA文件复制到Harbor主机上的Docker证书文件夹中

您必须先创建相应的文件夹。

mkdir -p /etc/docker/certs.d/192.0.1.208:8443

cp 192.0.1.208.cert /etc/docker/certs.d/192.0.1.208/

cp 192.0.1.208.key /etc/docker/certs.d/192.0.1.208/

cp ca.crt /etc/docker/certs.d/192.0.1.208/

​​​​​​​5.4重启docker

systemctl restart docker

​​​​​​​6.访问harbor

http://www.lqws.cn/news/574489.html

相关文章:

  • 1.认识Docker
  • #华为鲲鹏#华为计算#鲲鹏开发者计划2025#
  • Prompt Depth Anything:以提示方式驱动的Depth Anything用于实现4K分辨率下的精确米制深度估计
  • 04-GRU模型
  • python中多线程:线程插队方法join详解、线程停止、通过变量来让线程停止
  • Linux中ssh无法使用配置的环境变量,ssh(非登录环境)环境变量和登录环境变量不同步问题
  • document.write 和 innerHTML、innerText 的区别
  • MATLAB仿真:经过大气湍流的涡旋光束的光斑漂移
  • Transformer超详细全解!含代码实战
  • 双指针的用法
  • 指针篇(6)- sizeof和strlen,数组和指针笔试题
  • 请求转发,响应重定向
  • 在Linux系统中部署Java项目
  • 边界的艺术:支持向量机与统计学习时代的王者
  • 学习日志02 ETF 基础数据可视化分析与简易管理系统
  • 从身体营养元素方向考虑,缺乏哪些元素会导致我偏头痛?
  • GAN的思考及应用
  • 04_JSP进阶_EL_JSTL
  • 养老保险交得越久越好
  • Python爬虫:Requests与Beautiful Soup库详解
  • 机器学习9——决策树
  • 矩阵及矩阵快速幂
  • 【算法设计与分析】(四)Strassen 矩阵
  • 免费SSL证书一键申请与自动续期
  • 贝叶斯自学笔记——基础工具篇(一)
  • 数据库-事务
  • 大数据Hadoop之——Flume安装与使用(详细)
  • sqlserver函数与过程(二)
  • 【Docker基础】Docker容器管理:docker inspect及其参数详解
  • 使用component封装组件和h函数的用法