• 首页
  • 文章
  • 针对特定服务器(如Nginx)的检测脚本

针对特定服务器(如Nginx)的检测脚本

编辑:ssl证书
来源:topssl
浏览量:77
  
2025-12-19 16:33

本文利用以下Bash脚本对Nginx服务器进行SSL合规性与配置检测。该脚本集成了OpenSSL核心诊断命令,专门针对安卓设备常见的“证书链缺失”和“协议不匹配”问题进行扫描。


Nginx SSL 配置自动化检测脚本

您可以将以下代码保存为 check_ssl.sh 并运行:

Bash

#!/bin/bash
# Nginx SSL 状态检测脚本

DOMAIN=$1
PORT=${2:-443}

if [ -z "$DOMAIN" ]; then
    echo "使用方法: ./check_ssl.sh <域名> [端口]"
    exit 1
fi

echo "--- 正在检测域名: $DOMAIN (端口: $PORT) ---"

# 1. 检测证书链完整性 (针对安卓设备最关键的一项)
echo "[1/4] 正在检测证书链..."
CHAIN_COUNT=$(openssl s_client -connect ${DOMAIN}:${PORT} -showcerts < /dev/null 2>/dev/null | grep -c "BEGIN CERTIFICATE")
if [ "$CHAIN_COUNT" -lt 2 ]; then
    echo "警告: 证书链可能不完整!仅检测到 $CHAIN_COUNT 个证书。安卓设备可能会报错。"
else
    echo "正常: 检测到 $CHAIN_COUNT 个证书。"
fi

# 2. 检查证书有效期
echo "[2/4] 正在检测证书有效期..."
openssl s_client -connect ${DOMAIN}:${PORT} < /dev/null 2>/dev/null | openssl x509 -noout -dates

# 3. 验证服务器支持的 TLS 协议版本
echo "[3/4] 正在检测协议支持..."
for v in tls1 tls1_1 tls1_2 tls1_3; do
    openssl s_client -connect ${DOMAIN}:${PORT} -$v < /dev/null 2>/dev/null | grep -q "Cipher" && echo "支持: $v" || echo "不支持: $v"
done

# 4. 提取颁发者与主题信息
echo "[4/4] 证书详细身份..."
openssl s_client -connect ${DOMAIN}:${PORT} < /dev/null 2>/dev/null | openssl x509 -noout -subject -issuer

echo "--- 检测完成 ---"

如何解读检测结果并修复 Nginx?

  • **如果检测到证书链不完整:**在 Nginx 配置文件中,ssl_certificate 选项应指向包含“服务器证书 + 中间证书”的合并文件(通常是 .crt.pem),而不是仅包含单个服务器证书的文件。
  • **如果安卓 10 无法连接:**请检查协议支持。Android 10 默认支持 TLS 1.3,但也要求证书不能使用过时的 SHA-1 签名。
  • **如果出现域名不匹配:**请检查脚本输出的 subject 信息。确保访问的域名包含在证书的“使用者可选名称 (SAN)”或通配符范围内。

运行建议

在运行脚本前,请确保您的环境中已安装 openssl。您可以通过执行 chmod +x check_ssl.sh 赋予其执行权限。

北京SSL证书申请

SSL证书的组织部,锁定安全,加密信任,让网站安全不再是难题!
企业使用OA SSL证书,让你的网站马上变安全, 申请SSL证书?找我!简单、快捷、专业!

即刻扫码 咨询技术
证书技术支持
139-1050-5354
欢迎打扰
热      情
SSL证书 | 免费SSL证书申请、安装、管理与安全指南
企业OV SSL证书申请
139-1050-5354
真诚合作 欢迎咨询