nginx Command
openssl 检查 HTTPS 证书命令
openssl s_client 检查线上 HTTPS 证书的常用命令,openssl s_client -connect example.com:443 -servername 触发 SNI 拿到真实证书,用 openssl x509 -noout -dates -issuer -subject 提取有效期与颁发者,-showcerts 查看完整证书链。
检查公网 HTTPS 证书时一定带 -servername 触发 SNI,否则多站点 Nginx 可能返回默认证书。
Scenario
什么时候用这组命令
这组命令适合在处理“openssl 检查 HTTPS 证书命令”时作为第一轮检查模板。使用时先替换占位符,再在目标机器或目标 namespace 中执行,避免在错误环境里得到误导结论。
Input
你需要先准备什么
- 确认请求是否真正到达当前 Nginx,而不是 CDN、负载均衡或另一台机器。
- 保留一次失败请求的时间、域名、路径、状态码和客户端 IP,方便和 access/error log 对齐。
- 修改配置前先导出 nginx -T 的最终合并配置,避免只看了未生效的片段。
Risk Notes
执行风险
- 不要在生产环境直接 restart Nginx,优先 nginx -t 后 reload,restart 会中断正在处理的连接。
- 不要为了临时修复把 body size、CORS 或 TLS 校验无上限放开,应设置合理的业务上限并记录调整原因。
- 不要忽略 error.log 中反复出现的 upstream 超时或 SSL 错误,这些往往是更大问题的早期信号。
Commands
命令详解
命令 1: 执行 echo
用于检查证书有效期、链路加密和协议版本。重点看 notAfter 日期和 Verify return code。
- 确认命令运行位置正确。
- 保留关键输出,方便和修复后对比。
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -dates -issuer -subject命令 2: 执行 openssl
用于检查证书有效期、链路加密和协议版本。重点看 notAfter 日期和 Verify return code。
- 确认命令运行位置正确。
- 保留关键输出,方便和修复后对比。
openssl s_client -connect example.com:443 -servername example.com -showcerts命令 3: 发起 HTTP/网络探测
用于从指定位置模拟真实请求。加 -v 可以看到 DNS、TCP、TLS、HTTP 头和代理连接过程,是定位链路阶段的关键证据。
- 确认命令运行位置正确。
- 保留关键输出,方便和修复后对比。
curl -vI https://example.com命令 4: 执行 openssl
用于检查证书有效期、链路加密和协议版本。重点看 notAfter 日期和 Verify return code。
- 确认命令运行位置正确。
- 保留关键输出,方便和修复后对比。
openssl x509 -in fullchain.pem -noout -text | lessWorkflow
建议执行顺序
按顺序执行,不要跳过确认类命令
先用只读命令确认状态,再执行会改变状态的命令。检查公网 HTTPS 证书时一定带 -servername 触发 SNI,否则多站点 Nginx 可能返回默认证书。
- 用 s_client 连接真实域名和 443 端口。
- 始终指定 -servername,避免 SNI 误判。
- 提取证书 dates、issuer、subject 判断有效期和域名。
- 需要查链路时加 -showcerts 查看完整证书链。
- 修复后从外部网络再次验证线上返回结果。
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -dates -issuer -subject
openssl s_client -connect example.com:443 -servername example.com -showcerts
curl -vI https://example.com把命令输出变成结论
命令本身不是结论。每次执行后要回答:目标是否存在、状态是否异常、异常是否能解释用户看到的现象。
- 记录关键字段,而不是整屏复制
- 把正常路径和异常路径输出对比
- 输出为空也要解释:是确实没有,还是权限/过滤条件不对
openssl s_client -connect example.com:443 -servername example.com -showcerts
curl -vI https://example.com
openssl x509 -in fullchain.pem -noout -text | less执行前替换占位符并控制影响范围
包含 <service>、<pod>、<namespace>、<pid>、<container> 的命令必须先替换。涉及 reload、restart、KILL、vacuum、prune 的命令要确认影响范围。
- 优先在测试环境或只读模式验证
- 生产执行前保留回滚路径
- 把最终可用命令写入工单或 runbook
curl -vI https://example.com
openssl x509 -in fullchain.pem -noout -text | lessVerification
怎么判断命令有效
- 命令已在正确机器、正确用户、正确 namespace 或正确仓库下执行。
- 输出能支撑明确判断:正常、异常、权限不足、目标不存在或需要下一跳排查。
- 对有副作用的命令,已确认执行窗口、影响范围和回滚方式。
Prevention
沉淀到日常流程
- 把 nginx -t 和 reload 后健康检查写入发布流程,每次变更都做一次端到端验证。
- 为关键站点保留一条外网探测,监控状态码、证书有效期和响应时间,避免等到用户反馈才发现问题。
- 把上传大小、代理超时、CORS 允许来源写成显式配置,避免散落在多个 location 中导致不一致。
- 建立 Nginx 配置模板管理机制,所有 server block 使用统一模板,减少手写配置的语法错误和遗漏。
常见问题
为什么 openssl 查到的证书和服务器文件不同?
可能 Nginx 未 reload、访问到了 CDN/负载均衡,或 SNI 没带导致返回默认证书。
Long-tail SEO
你可能正在搜索这些报错
下面这些错误原文、场景词和中英文搜索词,都是排查同类问题时常见的入口。
- openssl 查看证书
- openssl 检查 HTTPS 证书
- openssl x509 证书信息
- openssl 查看证书过期时间
- HTTPS 证书查看命令
- openssl s_client 连接测试
Need More Help
这组命令还不够贴合你的场景?
把你的系统环境、目标操作和报错贴过来,我会优先补充更具体的命令模板。