mcpField
C
Crtsh

Crtsh

远程服务
pipeworx.io安全05 天前更新

关于 Crtsh

Crtsh 是用于搜索 crt.sh 证书透明度记录的 MCP 服务,适合需要查询域名证书历史、发现主机名或查看特定证书详情的安全与基础设施工作。

主要功能

  1. 01按域名搜索证书
  2. 02从 SAN 枚举主机名
  3. 03排除已过期证书
  4. 04按 ID 或序列号获取证书 PEM
  5. 05去重并按时间排序结果

适用场景

  1. 01根据证书记录发现子域名
  2. 02检查域名已签发的 TLS 证书
  3. 03查看证书有效期和颁发者信息
  4. 04按 crt.sh ID 或序列号检索证书

MCP 相关

通过 Pipeworx 网关或本地 stdio 服务向 MCP 客户端提供 crt.sh 域名搜索和证书查询工具。网关还提供 Pipeworx 通用元工具;独立模式仅提供此组件的工具。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://gateway.pipeworx.io/crtsh/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

详细介绍

@pipeworx/crtsh

从 crt.sh 搜索证书透明度日志——查找为某个域名及其子域名签发的所有 TLS 证书,包括颁发者、有效期、序列号和完整的 SAN 列表。

属于 Pipeworx 项目——一个将 AI Agent 连接到 1875+ 个实时数据源的 MCP 网关。这是一个独立的非官方集成,与上游提供方无关联、未获其认可,也未由其发布。

工具

  • crtsh_search_domain(domain, include_subdomains?, exclude_expired?, limit?) — 查找某个域名的所有已记录证书,按证书 ID 去重并按最新优先排序,同时返回 unique_names:所有证书中出现过的不同主机名。这正是大多数调用方真正需要的子域名枚举结果。
  • crtsh_certificate(id?, serial?, include_pem?) — 按 crt.sh ID 或十六进制序列号查询一张证书。返回 PEM 正文;按 serial 查询时也会附带已记录的元数据,按 id 查询则只返回 PEM(参见“注意事项”)。

身份验证

无需密钥。

数据源

crt.sh 由 Sectigo 运营,是公共证书透明度日志 PostgreSQL 数据库的 JSON 视图。

注意事项

  • crt.sh 响应较慢。 对大型域名的通配符查询通常需要 10-20 秒,而且服务端没有设置自己的查询超时。本工具包中的每次调用都设为 25 秒超时,而非采用工具包默认值。
  • 只有标识类查询才会遵循 output=json——q=、serial=、Identity=。?id=<n>&output=json 会返回字面字符串 Unsupported output type: json,且状态码为 HTTP 200。如果解析时不检查,这会被静默地当作零条结果;crtJson() 会拒绝任何不以 [ 或 { 开头的正文。
  • ?d=<id> 和 ?id=<id> 是不同的参数。 d 返回 PEM;id 会呈现 HTML 页面。因此,crtsh_certificate 可以按 ID 返回 PEM,却无法返回其元数据——没有按 ID 查询 JSON 的接口,所以只有通过 serial= 查询才能获得元数据。
  • name_value 会将所有 SAN 打包到一个以换行符分隔的字段中。 拆分该字段,才能从报告 8 张证书变成报告调用方所需的 40 个主机名。
  • 同一张证书会显示为多行——crt.sh 对每个(证书、匹配标识)组合返回一行,因此含有六个匹配 SAN 的证书会显示为六行,且 id 相同。应按 id 去重,否则所有计数都会虚高。
  • 预证书和最终证书是两条 CT 记录,有不同的 crt.sh ID,但序列号相同,因此按 ID 计数大致会让实际签发的证书数量翻倍。crtsh_search_domain 会同时报告 total_log_entries_found(不同的 crt.sh ID)和 unique_certificates_found(不同的序列号)。回答“签发了多少张证书”时,应引用第二个数字。
  • CT 仅涵盖公开受信任的 CA。 使用内部或私有 CA 的主机不会出现在此处;没有搜索结果并不能证明该主机不存在。

快速开始

添加到你的 MCP 客户端(Claude Desktop、Cursor、Windsurf 等):

{
  "mcpServers": {
    "crtsh": {
      "url": "https://gateway.pipeworx.io/crtsh/mcp"
    }
  }
}
此端点实际提供的内容

https://gateway.pipeworx.io/crtsh/mcp 上的 tools/list 会返回上表中的工具,以及 Pipeworx 共享元工具——ask_pipeworx、discover_tools、search_within、remember/recall 和网关范围内的其他工具。因此,你看到的工具数量会多于表中的数量:目前,单个工具包端点会列出约 30 个共享工具,以及该工具包自身的工具。连接的 initialize 响应会说明确切范围,也是当天情况的权威答案。

这是有意为之,并非意外复用。元工具让范围受限的连接也能回答本工具包未覆盖的问题——通过 ask_pipeworx 跨整个目录进行路由——而无需添加第二个 MCP 服务。目前无法在不包含这些工具的情况下挂载工具包端点;如果额外的架构定义占用的上下文超过了路由带来的价值,请连接一次完整网关,而不是连接多个工具包端点。

或者,连接完整的 Pipeworx 网关,直接列出每个工具包的所有工具,而不只是当前工具包的工具:

{
  "mcpServers": {
    "pipeworx": {
      "url": "https://gateway.pipeworx.io/mcp"
    }
  }
}

两个 URL 都连接到同一个网关和相同的 1875+ 个数据源。唯一的区别是直接列出哪个工具包的工具;通过 ask_pipeworx,无论连接哪一个,都能访问所有工具。

没有 MCP 客户端?通过 HTTP 调用

curl -X POST https://gateway.pipeworx.io/v1/tools/crtsh_search_domain \
  -H 'Content-Type: application/json' \
  -d '{"domain":"pipeworx.io","exclude_expired":true,"limit":3}'

首次调用无需账户。检查任意工具:GET https://gateway.pipeworx.io/v1/tools/crtsh_search_domain。查找工具:使用 {"query":"..."} 向 POST https://gateway.pipeworx.io/v1/tools/search_packs 发送请求。

独立运行(无需网关账户)

此软件包也可以作为本地 stdio MCP 服务运行——无需 Pipeworx 账户,也无需经过网关:

{
  "mcpServers": {
    "crtsh": {
      "command": "npx",
      "args": ["-y", "@pipeworx/mcp-crtsh"]
    }
  }
}

也可以直接运行,确认它能正常启动:

npx -y @pipeworx/mcp-crtsh

它通过 stdin/stdout 使用 MCP 协议,并响应 initialize/tools/list/tools/call,但仅提供此工具包的工具——不包含上述网关连接额外提供的任何共享元工具。相同的源代码和工具,但没有 ask_pipeworx 路由。

使用 ask_pipeworx

你可以用普通英语提问,而不是直接调用工具——无论是使用上文的工具包端点,还是完整网关,都可以这样做:

ask_pipeworx({ question: "your question about Crtsh data" })

网关会自动选择合适的工具并填写参数。

更多信息

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。