Windows下Docker部署Django项目Nginx SSL证书加载失败
解决方案
1. 恢复证书的标准PEM格式
把之前修改为-----BEGIN TRUSTED CERTIFICATE-----的证书内容改回原始格式:
-----BEGIN CERTIFICATE----- ...(原证书内容)... -----END CERTIFICATE-----
TRUSTED CERTIFICATE格式仅用于CA信任证书,服务器证书不需要此格式,强行修改会导致Nginx无法正确解析证书。
2. 直接使用mkcert生成的文件,无需额外转换
mkcert生成的文件已经是标准PEM格式:
- 将
my-dev-env.local.pem直接重命名为my-dev-env.local.crt(证书文件) - 将
my-dev-env.local-key.pem直接重命名为my-dev-env.local.key(私钥文件)
无需用openssl重新转换,避免引入格式问题。
3. 检查Nginx配置与Docker挂载路径
- 确认Nginx配置文件中的SSL路径指向正确:
错误日志中的ssl_certificate /etc/nginx/certs/my-dev-env.local.crt; ssl_certificate_key /etc/nginx/certs/my-dev-env.local.key;cannot load certificate "data:"提示配置可能误用了data:URI而非文件路径,需修正为实际挂载的文件路径。 - 检查Docker Compose配置,确保证书目录正确挂载到Nginx容器:
替换services: nginx: volumes: - ./path/to/your/certs:/etc/nginx/certs./path/to/your/certs为本地证书文件所在的实际目录。
4. 确认本地CA证书信任
运行mkcert -install后,mkcert的根CA已安装到Windows信任存储,可通过以下步骤验证:
- 按下
Win+R输入certmgr.msc打开证书管理器 - 依次展开"受信任的根证书颁发机构" -> "证书",确认存在名为
mkcert XXX的证书
5. 重启Docker栈
修改配置和证书后,彻底重启所有容器:
docker-compose down docker-compose up -d
内容的提问来源于stack exchange,提问作者nbl412
相关产品推荐
相关产品推荐

