在 Verdaccio 中配置 HTTPS
1. 配置 SSL 证书
首先,确保您有有效的 SSL 证书,您可以使用如下几种方式获得证书:
- Let’s Encrypt:免费 SSL 证书
- 自签名证书:用于测试和内部使用
- 购买证书:通过证书颁发机构(CA)购买
SSL 证书通常包括两个文件:
- 私钥文件(
private.key
) - 公钥证书文件(
public.pem
)
2. 配置 Verdaccio 启用 HTTPS
在 Verdaccio 配置文件中启用 HTTPS,您需要编辑 config.yaml
配置文件,修改以下内容来启用 HTTPS 支持。
2.1 修改 config.yaml
# Verdaccio 配置文件
listen:
- http://0.0.0.0:4873 # HTTP 监听,默认 4873 端口
- https://0.0.0.0:443 # HTTPS 监听,默认 443 端口
https:
enable: true # 启用 HTTPS
key: /path/to/private.key # SSL 私钥文件路径
cert: /path/to/public.pem # SSL 公钥证书文件路径
ca: /path/to/ca.pem # 可选,CA 证书路径(如果有)
# 其它配置...
- listen:此配置告诉 Verdaccio 在两个端口上监听:
4873
端口用于 HTTP(默认端口),443
端口用于 HTTPS(通常是默认 HTTPS 端口)。 - https:启用 HTTPS,您需要提供私钥(
private.key
)和公钥证书(public.pem
)的路径。enable: true
启用 HTTPSkey
是您的 SSL 私钥文件的路径cert
是您的 SSL 公钥证书的路径ca
(可选)是根 CA 证书路径,通常在使用 Let's Encrypt 时需要,或者如果您使用了私有 CA 证书。
示例配置:
listen:
- http://0.0.0.0:4873
- https://0.0.0.0:443
https:
enable: true
key: /data/verdaccio/******.com/private.key # 私钥路径
cert: /data/verdaccio/******.com/public.pem # 公钥路径
ca: /data/verdaccio/******.com/ca.pem # 可选,CA 证书路径
3. 生成和安装 SSL 证书(如果使用自签名证书)
如果您没有有效的 SSL 证书,可以使用 openssl
生成一个自签名证书用于测试。以下是生成自签名证书的命令:
3.1 生成私钥和证书
# 生成私钥
openssl genpkey -algorithm RSA -out private.key
# 生成证书签署请求 (CSR)
openssl req -new -key private.key -out csr.pem
# 生成自签名证书
openssl x509 -req -in csr.pem -signkey private.key -out public.pem -days 365
3.2 将证书文件放置在服务器上的适当路径
将生成的 private.key
和 public.pem
文件上传到您的服务器,并将它们放置在适当的目录中(例如 /data/verdaccio/******.com/
),然后在 config.yaml
文件中指定它们的路径。
4. 启动 Verdaccio
配置完成后,您可以重新启动 Verdaccio 服务来使配置生效。
# 如果您使用的是系统服务管理(如 systemd),重启 Verdaccio 服务
sudo systemctl restart verdaccio
# 或者,如果您直接通过命令行启动 Verdaccio:
verdaccio
5. 验证 HTTPS 配置
在浏览器中访问您的 Verdaccio 服务,使用 HTTPS 协议:
- 访问
https://npm.******.com:443
(请替换为您的域名)。
如果配置正确,您应该能够通过 HTTPS 安全地访问 Verdaccio。
6. (可选) 配置端口 80 和 443 监听
如果希望通过端口 80(HTTP)自动重定向到端口 443(HTTPS),可以在 Verdaccio 配置文件中添加 listen
配置来实现。但需要注意,您必须确保 HTTPS 配置有效,且您的防火墙和端口设置允许访问端口 443。
listen:
- http://0.0.0.0:80 # HTTP,自动重定向到 HTTPS
- https://0.0.0.0:443 # HTTPS
7. 常见问题排查
- SSL 证书错误:如果您看到浏览器警告 SSL 证书错误,确保您使用的是有效的证书,或者浏览器允许使用自签名证书(开发时)。
- 端口冲突:确保 80 和 443 端口没有被其他服务占用,尤其是在使用云服务器时,可能需要调整防火墙设置以允许访问这些端口。
总结
通过上述步骤,您可以直接在 Verdaccio 中启用 HTTPS 支持,并确保您的仓库通过 HTTPS 安全访问。无需使用 Nginx 作为反向代理,直接在 Verdaccio 配置中配置 SSL 证书和端口监听即可实现安全的连接。
评论区