📜  ssl 安全检查 ats - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:47:42.177000             🧑  作者: Mango

SSL 安全检查 ATS - Shell-Bash

介绍

本文介绍了如何使用 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 安全设置的详细信息。

示例报告
SSL 安全检查报告
  • 域名: example.com

证书过期检查
  • 过期日期: Feb 23 23:59:59 2023 GMT
  • 证书还未过期。
强密码套件检查
  • 密码套件: ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
  • 所有密码套件都是安全的。
加密传输检查
  • 加密传输状态: 启用
  • 加密传输已启用。