
回复
在鸿蒙开发中,ohpm-repo私有仓库的安全至关重要。本文教你通过HTTPS加密传输、反向代理和证书管理,构建安全可靠的组件仓库通信链路~
修改config.yaml
listen: https://<服务器公网IP>:8088 # 替换为实际IP
https_key: ./ssl/server.key # 私钥路径
https_cert: ./ssl/server.crt # 证书路径
自签名证书生成(OpenSSL)
# 生成4096位私钥
openssl genrsa -out server.key 4096
# 生成自签名证书(有效期10年)
openssl req -new -x509 -days 3650 -key server.key -out server.crt
# 提示:国家/地区等信息需正确填写,域名可写服务器IP
权限设置
chmod 600 server.key server.crt # 仅当前用户可读写
mkdir -p ssl && mv *.key *.crt ssl/
nginx.conf配置示例
server {
listen 443 ssl;
server_name repo.example.com; # 替换为实际域名
# SSL证书路径(与ohpm-repo保持一致)
ssl_certificate /path/to/ssl/server.crt;
ssl_certificate_key /path/to/ssl/server.key;
# 安全Headers
add_header Content-Security-Policy "default-src 'self'";
add_header X-Content-Type-Options nosniff;
location / {
# 转发到ohpm-repo实例(假设本地监听8088)
proxy_pass http://127.0.0.1:8088;
# 传递客户端真实IP
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
}
开启反向代理模式
use_reverse_proxy: true
store:
config:
server: https://repo.example.com # 填写Nginx代理地址
阶段 | 操作要点 |
---|---|
生成 | 使用CA签名证书替代自签名(推荐Let’s Encrypt) |
存储 | 私钥存入硬件安全模块(HSM)或密钥管理服务(KMS) |
更新 | 设定期限(如提前30天)自动轮换证书 |
废弃 | 吊销过期证书,清理服务器残留文件 |
Let’s Encrypt示例(Certbot)
# 安装Certbot
sudo apt-get install certbot python3-certbot-nginx
# 自动配置Nginx证书
sudo certbot --nginx -d repo.example.com
Nginx中禁用弱协议
ssl_protocols TLSv1.3; # 仅启用TLSv1.3(最安全版本)
ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers on;
验证工具
openssl s_client -connect repo.example.com:443
:测试连接加密套件场景:主从仓库同步数据时防止中间人攻击
方案:
示例:HAProxy负载均衡器
frontend https-in
bind *:443 ssl crt /path/to/ssl/combined.pem
mode http
default_backend ohpm-repo-instances
backend ohpm-repo-instances
mode http
server instance1 192.168.1.1:8088 ssl verify required ca-file /path/to/ca.crt
server instance2 192.168.1.2:8088 ssl verify required ca-file /path/to/ca.crt
漏洞类型 | 检测命令/工具 | 修复方案 |
---|---|---|
证书过期 | openssl x509 -in server.crt -text |
及时更新证书 |
弱加密套件 | nmap --script ssl-enum-ciphers |
禁用低强度加密套件 |
跨站脚本攻击 | OWASP ZAP扫描 | 启用Content-Security-Policy Header |
代理配置错误 | 检查X-Forwarded-For 头是否正确 |
确保反向代理传递完整客户端信息 |
问题:HTTPS加密增加CPU消耗
优化方案:
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=ohpm_cache:10m max_size=10g;
ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m;