🔍 高性能SSL/TLS证书扫描工具,支持对大量IP段进行并发扫描并将结果存储到SQLite数据库中。

此前已经使用这个程序获取了dmit/racknerd/搬瓦工的所有IP的SSL元信息数据。

GitHub地址 https://github.com/nodeseeker/CertHunter

使用示例

DMIT代理了microsoft.com的IP地址

搬瓦工代理了apple.com的IP地址

✨ 主要特性

  • 🚀 高并发扫描: 支持数千并发,快速扫描大量IP
  • 📊 批量处理: 事务批量写入,提高数据库性能
  • 🎯 精准扫描: 支持多个CIDR IP段同时扫描
  • 💾 高效存储: SQLite数据库,支持WAL模式优化
  • 🔧 灵活配置: 命令行参数支持,配置文件可定制
  • 📈 实时进度: 详细的扫描进度和统计信息
  • 🛡️ 错误处理: 完善的错误处理和超时机制

🚀 快速开始

1. 安装程序

release 页面下载预编译的二进制文件,请注意对应的CPU架构和系统。当前支持AMD64和ARM64架构的Linux、macOS和Windows系统。

2. 运行扫描

# 使用默认配置文件 config.json./CertHunter

⚙️ 配置文件

建议使用下载中所带有的示例config.json,并将其修改为适合系统性能的配置。其中,cidrs为要扫描的IP段数组(CIDR格式)。

配置示例

{  "cidrs": [    "198.46.218.0/24",    "107.175.44.0/24",    "192.3.54.0/24"  ],  "port": "443",  "concurrency": 2000,  "timeout": 3,  "db_file": "ssl_scan_optimized.db",  "batch_size": 10000}

📈 性能基准

1核心1G内存1GbpsVPS上,对40640IP地址进行扫描,公获得5754个证书,共耗时29.43秒。详细时间如下:

real    0m29.430suser    0m18.184ssys     0m8.104s

采用的配置如下:

"concurrency": 2000,"timeout": 3,"batch_size": 10000

统计数据如下:

规模IP数量时间速度内存使用上行速度下行速度
中型40640~30秒~1380 IP/s~250MB4-15Mbps10-15Mbps

💾 数据库查询

基础查询

sqlite3 ssl_scan.db # 使用SQLite3进入指定数据库
-- 查询特定域名的证书SELECT ip, common_name, dns_names FROM certificates WHERE common_name LIKE '%example.com%';-- 查询特定IP的证书,比如192.168.1.1SELECT * FROM certificates WHERE ip = '192.168.1.1';-- 统计域名分布,查看前10个最常用的域名SELECT common_name, COUNT(*) as count FROM certificates WHERE error IS NULL OR error = '' GROUP BY common_name ORDER BY count DESC LIMIT 10;

🎯 使用场景

  • 网络安全审计: 扫描企业网络中的SSL/TLS证书部署情况
  • 证书管理: 批量检查证书有效期和配置
  • 合规检查: 验证SSL/TLS证书的部署和配置规范
  • 资产发现: 发现网络中开放SSL/TLS服务的设备