针对特定服务器(如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证书的组织部,锁定安全,加密信任,让网站安全不再是难题!
企业使用OA SSL证书,让你的网站马上变安全,
申请SSL证书?找我!简单、快捷、专业!
证书技术支持
139-1050-5354
139-1050-5354
欢迎打扰
热 情
热 情
企业OV SSL证书申请
139-1050-5354
真诚合作 欢迎咨询