首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >解决 Nginx Let's Encrypt HTTPS 证书 错误: 服务器缺少中间证书

解决 Nginx Let's Encrypt HTTPS 证书 错误: 服务器缺少中间证书

作者头像
OwenZhang
发布2021-12-07 15:08:25
发布2021-12-07 15:08:25
3.5K0
举报
文章被收录于专栏:Owen's WorldOwen's World

前言

期初是由于在ios系统出现https连接ssl握手时间过长 经过调查有网友说是ssl中间证书缺失 时间长 和 中间证书缺失 这两点是否存在关联目前还有待考证

不过目前发现 NginxLet's Encrypt 证书的确存在中间证书缺失问题 本文介绍如何解决这一问题

这里证书用的是 Let's Encrypt 通配符证书 服务端 Nginx 1.16.0

调查

首先检查 是否存在这一问题

检测地址: www.myssl.cn/tools/check…

检测结果:

Nginx相关配置:

  1. server {
  2. listen 443 ssl http2 default_server;
  3. server_name zzzmh.cn;
  4. ssl_certificate /root/ssl/fullchain.pem;
  5. ssl_certificate_key /root/ssl/privkey.pem;
  6. ssl_trusted_certificate /root/ssl/chain.pem;
  7. ...
  8. }

关键问题是在 fullchain.pem 根据调查 Nginx 不像是 Apache 有专门的参数配置中间证书 Nginx 需要全部配置在 fullchain.pem

顾正确的格式是分为三段 分别代表 服务器层 中间层 root层

  1. -----BEGIN CERTIFICATE-----
  2. ...
  3. -----END CERTIFICATE-----
  4. -----BEGIN CERTIFICATE-----
  5. ...
  6. -----END CERTIFICATE-----
  7. -----BEGIN CERTIFICATE-----
  8. ...
  9. -----END CERTIFICATE-----

而实际上一般 Let's Encrypt 生成的证书 fullchain.pem 默认都是两段

  1. -----BEGIN CERTIFICATE-----
  2. ...
  3. -----END CERTIFICATE-----
  4. -----BEGIN CERTIFICATE-----
  5. ...
  6. -----END CERTIFICATE-----

解决

其实具体缺失中间证书是不是一个问题, 有什么后果,都尚未可知。 只是抱着能解决就解决的心态去调查解决的。

首先先找到 Let's Encrypt 生成出证书的4个文件

  1. cert.pem
  2. chain.pem
  3. fullchain.pem
  4. privkey.pem

cert.pem 内容复制到这个地址解析 www.myssl.cn/tools/downl…

解析成功可以获得2个下载按钮 使用 [点击下载中间证书文件]

将下载到的文件中的 内容 复制到 fullchain.pem两段内容的中间 ,保存即可。

(需要注意 fullchain.pem 格式要求极为严格 不能存在空行 空格等)

最后重启nginx 问题解决

  1. # 测试配置是否正常
  2. nginx -t
  3. # 重新加载配置文件
  4. nginx -s reload

再次去到一开始检测的网址 检测结果:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021年10月21日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 调查
  • 解决
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档