📅  最后修改于: 2023-12-03 14:47:42.177000             🧑  作者: Mango
本文介绍了如何使用 Shell-Bash 编写一个用于执行 SSL 安全检查的脚本。该脚本使用 ATS(App Transport Security)来检查服务器或域名的 SSL 连接的安全性。它将返回一个 Markdown 格式的报告,其中包含各种 SSL 安全设置的详细信息。
#!/bin/bash
# 检查 SSL 安全性函数
function check_ssl_security() {
domain=$1
report=""
# 获取SSL证书信息
certificate_info=$(openssl s_client -connect ${domain}:443 -servername ${domain} 2>/dev/null | openssl x509 -noout -text)
# 检查证书是否过期
expiration_date=$(echo "${certificate_info}" | grep "Not After" | awk -F' : ' '{print $2}')
report+="### 证书过期检查\n"
report+="* 过期日期: ${expiration_date}\n"
if [[ $(date --date="${expiration_date}" +%s) -lt $(date +%s) ]]; then
report+="* 证书已经过期!\n"
else
report+="* 证书还未过期。\n"
fi
report+="\n"
# 检查是否启用了强密码套件
cipher_suites=$(echo "${certificate_info}" | grep "Cipher Suite:")
report+="### 强密码套件检查\n"
report+="* 密码套件: ${cipher_suites}\n"
if [[ $(echo "${cipher_suites}" | grep -iE "DES|RC4") ]]; then
report+="* 存在不安全的密码套件,应尽快升级至安全套件。\n"
else
report+="* 所有密码套件都是安全的。\n"
fi
report+="\n"
# 检查是否启用了加密传输
if [[ $(echo "${certificate_info}" | grep -i "Encryption") ]]; then
encryption_status="启用"
else
encryption_status="禁用"
fi
report+="### 加密传输检查\n"
report+="* 加密传输状态: ${encryption_status}\n"
if [[ ${encryption_status} == "禁用" ]]; then
report+="* 未启用加密传输,请立即启用。\n"
else
report+="* 加密传输已启用。\n"
fi
report+="\n"
echo -e "${report}"
}
# 主函数
function main() {
domain=$1
markdown_report=""
# 执行 SSL 安全检查
ssl_report=$(check_ssl_security ${domain})
# 构建 Markdown 报告
markdown_report+="## SSL 安全检查报告\n\n"
markdown_report+="* 域名: ${domain}\n\n"
markdown_report+="---\n\n"
markdown_report+="${ssl_report}"
echo -e "${markdown_report}"
}
# 调用主函数并传入域名参数
main "example.com"
运行上述脚本将生成一个 Markdown 格式的报告,其中包含有关指定域名的 SSL 安全设置的详细信息。