Shell脚本编程基础教程
海外云服务器 40个地区可选 亚太云服务器 香港 日本 韩国
云虚拟主机 个人和企业网站的理想选择 俄罗斯电商外贸虚拟主机 赠送SSL证书
美国云虚拟主机 助力出海企业低成本上云 WAF网站防火墙 为您的业务网站保驾护航
是一个 Bash 脚本的起始行!bin/bash
(通常应为#!/bin/bash
),但未提供具体的脚本代码或任务描述,请提供完整的脚本内容或具体任务说明,以便我为你生成准确的摘要。
- 修正错别字;
- 语句修饰与逻辑优化;补充与增强原创性**;
- 结构更清晰,语言更专业流畅。
在现代 DevOps 和云原生架构中,Harbor 作为企业广泛采用的开源容器镜像仓库,承担着镜像的存储、管理与分发等核心功能,为了保障数据传输过程中的安全性,Harbor 通常会配置 SSL/TLS 证书 来启用 HTTPS 协议,从而实现客户端与服务端之间的加密通信。
SSL 证书具有一定的有效期限(通常为 90 天或一年),一旦证书过期而未及时更新,不仅会导致 Harbor 管理界面无法访问,还会中断镜像的推送与拉取操作,进而影响整个 CI/CD 流水线的正常运行,甚至可能触发安全合规审计问题。
掌握 Harbor SSL 证书的更新方法,是每一位运维人员和 DevOps 工程师必须具备的核心技能之一,本文将详细介绍在不同部署方式下,如何安全、高效地完成 Harbor 的 SSL 证书更新操作。
为什么需要更新 SSL 证书?
SSL/TLS 证书的主要作用是通过加密技术保护客户端与服务器之间的通信,防止中间人攻击(MITM)和敏感数据泄露,一旦证书过期,客户端(如浏览器、Docker 客户端、CI/CD 工具)将无法验证服务器身份,从而触发“连接不安全”警告,甚至直接中断连接。
对于 Harbor 而言,SSL 证书过期可能带来以下严重后果:
- Docker 镜像的推送与拉取失败;
- Harbor 管理控制台无法访问;
- 持续集成/持续交付流水线中断;
- 企业安全合规审计无法通过。
定期更新 SSL 证书,是保障 Harbor 服务稳定运行和数据安全的关键措施。
Harbor 的部署方式与证书配置机制
Harbor 支持多种部署方式,适用于不同场景下的使用需求:
- Docker Compose 部署:适用于开发与测试环境,部署简单,适合快速启动;
- Kubernetes Helm Chart 部署:适用于生产环境,具备高可用性和弹性扩展能力;
- 离线安装包部署:适用于无互联网连接的隔离环境,便于企业内部部署。
无论采用哪种部署方式,Harbor 的 SSL 证书通常由反向代理组件(如 Nginx、HAProxy、Traefik 或 Kubernetes Ingress)处理,更新证书的核心操作主要包括以下几个步骤:
- 获取新的 SSL 证书与私钥;
- 替换原有的证书文件;
- 重启或重载反向代理服务;
- 验证新证书是否生效。
更新 SSL 证书的具体步骤(以 Docker Compose 部署为例)
以下以使用 docker-compose.yml
文件部署的 Harbor 为例,详细介绍 SSL 证书更新流程。
准备新的证书文件
通常包括以下文件:
your_domain.crt
:证书文件;your_domain.key
:私钥文件;- (可选)
ca_bundle.crt
:中间证书链文件。
将这些文件统一保存到 Harbor 配置目录下的 cert
文件夹中,/data/cert/
。
修改 docker-compose.yml
文件
确保 Nginx 容器正确挂载了证书目录,示例如下:
nginx: image: goharbor/nginx-photon:v2.11.0 container_name: harbor-nginx volumes: - ./config/nginx:/etc/nginx - /data/cert:/etc/cert
此配置确保了容器内部可以访问到新证书。
替换证书文件
将新证书文件复制到 /data/cert
目录,并覆盖旧文件:
cp your_domain.crt /data/cert/ cp your_domain.key /data/cert/
重载或重启 Nginx 服务
进入 Harbor 的 Nginx 容器并执行配置重载命令:
docker exec -it harbor-nginx nginx -s reload
或者直接重启容器:
docker restart harbor-nginx
验证证书是否更新成功
可以通过浏览器访问 Harbor 管理界面,点击地址栏的锁形图标,查看证书的有效期是否已更新。
也可以使用命令行工具进行验证:
openssl x509 -in /data/cert/your_domain.crt -text -noout
Kubernetes 环境下的 SSL 证书更新
在 Kubernetes 环境中,Harbor 通常通过 Helm Chart 部署,SSL 证书则由 Ingress 或 Service 配置管理。
更新 Kubernetes Secret
将新证书与私钥打包为 Kubernetes Secret:
kubectl create secret tls harbor-tls --cert=your_domain.crt --key=your_domain.key -n harbor
更新 Ingress 配置
确保 Ingress 资源引用了更新后的 Secret,示例配置如下:
spec: tls: - hosts: - harbor.example.com secretName: harbor-tls
应用变更并验证
更新 Ingress 后,建议重启 Ingress 控制器以确保证书生效:
kubectl rollout restart deployment ingress-nginx-controller -n ingress-nginx
随后,使用浏览器或 curl
命令验证证书是否更新成功:
curl -I https://harbor.example.com
自动化更新 SSL 证书(推荐做法)
为了避免手动更新带来的操作复杂性和潜在风险,建议结合 Let’s Encrypt + Certbot 实现 SSL 证书的自动签发与续期,并通过脚本自动更新 Harbor 的证书并重载服务。
使用 Certbot 获取并更新证书后,可编写如下脚本:
cp /etc/letsencrypt/live/yourdomain/fullchain.pem /data/cert/harbor.crt docker exec -it harbor-nginx nginx -s reload
然后将该脚本配置为定时任务(通过 cron
):
cp your_domain.crt /data/cert/ cp your_domain.key /data/cert/0
通过这种方式,可以实现证书的全自动更新,保障 Harbor 服务的持续安全与稳定运行。
更新 Harbor 的 SSL 证书是一项基础但至关重要的运维任务,无论采用 Docker Compose 还是 Kubernetes 部署方式,核心操作都围绕“替换证书文件”和“重启/重载反向代理服务”展开。
通过建立合理的自动化机制,不仅可以降低人工操作的风险,还能显著提升 Harbor 服务的可用性和安全性,随着企业对安全合规要求的不断提高,SSL 证书管理应成为 DevOps 流程中的标准环节之一。
定期检查证书的有效期、建立自动更新机制,是保障企业容器平台稳定运行的关键步骤。
Harbor 更新 SSL 证书、Harbor SSL 配置、Harbor 证书自动续期、Harbor 安全加固、DevOps 运维、容器镜像仓库安全