You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用nginx-le构建带Let's Encrypt的Nginx镜像遇PEM证书错误求助

解决Nginx-LE配置中PEM_read_bio_X509_AUX错误的方法

Hey,我之前用umputun/nginx-le搭建集成Let's Encrypt的Nginx镜像时,也踩过这个一模一样的坑!这个错误看起来是SSL证书读取失败,但本质问题其实很简单——你把证书路径指向了目录而不是具体的证书文件。

错误原因解析

错误提示里明确写了PEM_read_bio_X509_AUX("/etc/nginx/ssl/") failed,这里的/etc/nginx/ssl/是一个目录,而Nginx的ssl_certificate和ssl_certificate_key指令需要的是具体的PEM格式文件路径。当Nginx尝试读取目录作为证书时,自然无法解析出有效的证书内容,就会抛出"no start line: Expecting: TRUSTED CERTIFICATE"的错误。

修复步骤

1. 修正Nginx配置中的证书路径

打开你的Nginx配置文件(比如自定义的vhost配置或default.conf),找到SSL相关的配置段,确保ssl_certificate和ssl_certificate_key指向具体的证书文件:

server {
    listen 443 ssl;
    server_name your-domain.com;

    # 正确的证书路径,指向具体文件
    ssl_certificate /etc/nginx/ssl/cert.pem;
    ssl_certificate_key /etc/nginx/ssl/key.pem;

    # 其他SSL配置...
}

nginx-le容器默认会将Let's Encrypt生成的全链证书存为cert.pem,私钥存为key.pem,放在/etc/nginx/ssl/目录下。

2. 确认证书文件存在

如果是首次启动容器,可能Let's Encrypt还没完成证书颁发,这时候/etc/nginx/ssl/目录下可能没有有效证书。你可以先进入容器查看文件:

docker exec -it <你的容器名称或ID> ls -la /etc/nginx/ssl/

如果文件不存在,先让容器正常运行一段时间,等待它自动完成证书申请;或者可以先使用自签证书临时验证配置是否正确。

3. 重新加载Nginx配置

修正配置后,执行以下命令重新加载Nginx配置,无需重启容器:

docker exec -it <你的容器名称或ID> nginx -s reload

额外提示

如果你是通过环境变量配置nginx-le,要注意不要把证书路径类的变量(比如LETSENCRYPT_CERT_PATH)设为目录,保持默认值即可,容器会自动处理证书文件的路径。

内容的提问来源于stack exchange,提问作者Harshit Laddha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:03:05