Harbor服务需要crt证书,而下载是nginx的证书pem,应该怎么处理
1. 明确文件用途
shgbitai.com.key
:SSL 私钥文件(与 Apache/Nginx 通用)。shgbitai.com.pem
:已合并的证书文件(通常包含域名证书 + 中间证书链)。
Nginx 的证书通常以 .pem
或 .crt
为后缀,而 .pem
文件已经包含完整的证书链,无需额外合并,直接使用即可。
2. 验证证书内容
检查 shgbitai.com.pem
是否包含完整的证书链:
cat /home/syh/下载/17286371_shgbitai.com_nginx\ \(2\)/shgbitai.com.pem
输出应包含 2 个证书块(域名证书 + 中间证书),例如:
-----BEGIN CERTIFICATE-----
(域名证书内容)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(中间证书内容)
-----END CERTIFICATE-----
3. 重命名文件
将文件重命名为 Harbor 默认的证书文件名:
# 进入证书目录
cd /home/syh/下载/17286371_shgbitai.com_nginx\ \(2\)
# 重命名证书文件
cp shgbitai.com.pem server.crt # PEM 文件直接作为证书
cp shgbitai.com.key server.key # 私钥保持原名
4. 替换到 Harbor 证书目录
将文件复制到 Harbor 的证书目录:
sudo cp server.crt server.key /hab-data/harbor/data/secret/cert/
5. 设置文件权限
sudo chmod 644 /hab-data/harbor/data/secret/cert/server.crt
sudo chmod 600 /hab-data/harbor/data/secret/cert/server.key
6. 重启 Harbor 服务
# 仅重启 Nginx 容器
docker restart nginx
# 或完整重启 Harbor(推荐)
cd /hab-data/work/harbor
docker-compose down && docker-compose up -d
7. 验证证书
(1) 检查容器内文件:
docker exec nginx ls /etc/cert
输出应包含 server.crt
和 server.key
。
(2) 验证私钥与证书是否匹配:
openssl x509 -noout -modulus -in server.crt | openssl md5
openssl rsa -noout -modulus -in server.key | openssl md5
两个命令输出的哈希值 必须一致。
(3) 浏览器访问测试:
打开 https://你的Harbor域名
,确认证书已更新。
关键问题解答
为什么直接使用 Nginx 的证书?
- Nginx 的
.pem
文件已经包含完整的证书链(域名证书 + 中间证书),无需手动合并。 - 与 Harbor 默认的
server.crt
和server.key
命名规则完全兼容,无需格式转换。
为什么之前 Apache 的证书需要合并?
- Apache 的证书通常将域名证书(
public.crt
)和中间证书(chain.crt
)分开保存,而 Nginx 需要合并成一个文件。
总结
- 直接使用 Nginx 版本的证书,无需合并或格式转换。
- 操作步骤:重命名 → 替换 → 重启服务。
- 优先选择 Nginx 证书,避免手动操作错误。