Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
mkchain — 开源工具,帮助您构建有效的SSL证书链。 | Kitploit
工具/GitHubGitHub/trimstray/mkchain
加密/解密工具密码学实用工具与框架
GitHubtrimstray/mkchain

mkchain

开源工具,帮助您构建有效的SSL证书链。

查看仓库
381521年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

mkchain

开源工具,帮助你构建有效的SSL证书链。

Travis-CI Version License

描述 • 使用方法 • 参数 • 工作原理 • 必备条件 • 其他 • 许可证


Master

描述

是一款开源工具,帮助你构建有效的SSL证书链。它还能帮助你修复不完整的证书链,并下载所有缺失的CA证书。你也可以从远程服务器下载所有证书,并正确构建你的证书链。

使用方法

很简单:

root@kitploit:~
# 克隆此仓库
git clone https://github.com/trimstray/mkchain

# 进入仓库目录
cd mkchain

# 安装
./setup.sh install

# 运行应用
mkchain -i /data/certs -o /data/chain.crt
  • 到 bin/mkchain 的符号链接放置在 /usr/local/bin
  • 手册页放置在 /usr/local/man/man8

参数

提供以下选项:

root@kitploit:~
  Usage:
    mkchain <option|long-option>

  Examples:
    mkchain --in Root.crt --in Intermediate1.crt --in Server.crt --out bundle_chain_certs.crt
    mkchain --in /tmp/certs --out bundle_chain_certs.crt --with-root
    mkchain -i Server.crt -o bundle_chain_certs.crt
    mkchain -i https://incomplete-chain.badssl.com/ --with-root

  Options:
        --help        show this message
        --debug       displays information on the screen (debug mode)
    -i, --in          add certificates to merge (file, multiple files, directory with ssl certificates
                      or remote domain)
    -o, --out         saves the result (chain) to a file
        --with-root   add root certificate to certificates chain

-o|--out - 如果不使用此参数,mkchain 会将输出链保存到 mkchain/chains/ 目录。

工作原理

在阅读之前,请先阅读关于 SSL证书链 的文章。

从 ssllabs 的证书链开始。这些证书随 mkchain 一起提供,可以在 example/ssllabs.com 目录中找到,该目录还包含 all 目录(包含组装链所需的所有证书)和 server_certificate 目录(仅包含服务器证书)。

ssllabs.com 域的正确链(openssl 命令的结果):

root@kitploit:~
Certificate chain
 0 s:/C=US/ST=California/L=Redwood City/O=Qualys, Inc./CN=ssllabs.com
   i:/C=US/O=Entrust, Inc./OU=See www.entrust.net/legal-terms/OU=(c) 2012 Entrust, Inc. - for authorized use only/CN=Entrust Certification Authority - L1K
 1 s:/C=US/O=Entrust, Inc./OU=See www.entrust.net/legal-terms/OU=(c) 2012 Entrust, Inc. - for authorized use only/CN=Entrust Certification Authority - L1K
   i:/C=US/O=Entrust, Inc./OU=See www.entrust.net/legal-terms/OU=(c) 2009 Entrust, Inc. - for authorized use only/CN=Entrust Root Certification Authority - G2
 2 s:/C=US/O=Entrust, Inc./OU=See www.entrust.net/legal-terms/OU=(c) 2009 Entrust, Inc. - for authorized use only/CN=Entrust Root Certification Authority - G2
   i:/C=US/O=Entrust, Inc./OU=www.entrust.net/CPS is incorporated by reference/OU=(c) 2006 Entrust, Inc./CN=Entrust Root Certification Authority

上述代码展示了一个完整的链,由以下部分组成:

  • 身份证书(服务器证书)

    由 Entrust Certification Authority - L1K 颁发给 ssllabs.com

  • 中间证书

    由 Entrust Root Certification Authority - G2 颁发给 Entrust Certification Authority - L1K

  • 中间证书

    由 Entrust Root Certification Authority 颁发给 Entrust Root Certification Authority - G2

  • 根证书(自签名证书)

    由 Entrust Root Certification Authority 颁发给 Entrust Root Certification Authority

场景一

在此场景中,我们将链接所有提供的证书。运行工具的示例:

Master

场景二

在此场景中,我们仅使用服务器证书,并利用它来检索其余必需的证书。然后,如上所述,我们将所有提供的证书组合起来。运行工具的示例:

Master

证书链

为了创建一个有效的链,你必须向工具提供所有必要的证书(如果你为 -i|--in 参数设置了目录)。这些证书包括:

  • 服务器证书
  • 中间CA 和 根CA

这一点非常重要,因为如果没有它们,你将无法确定链的起点和终点。

如果你只将单个证书文件作为 -i|--in 的值,mkchain 会自动下载所有必要的证书。

但是,如果你在使用 mkchain 生成后查看生成的链内部,你会发现其中没有根证书。

为什么呢?因为自签名的根证书不需要/不应该包含在 Web 服务器配置中。它们没有用处(客户端总是会忽略它们),而且它们还会带来轻微的性能(延迟)损失,因为它们会增加 SSL 握手的大小。

如果你想要将根证书添加到证书链中,请使用 --with-root 参数调用该工具。

认证路径

mkchain 允许使用两种 认证路径:

Master

输出注释

在生成证书链时,mkchain 会显示包含证书信息(包括任何错误)的注释。

以下是所有可能的注释列表:

未找到身份(最终用户、服务器)证书

当缺少作为链起点的服务器证书时,会显示此消息。这是一种特殊情况,因为在这种情况下,mkchain 仅显示此信息后便会结束运行。服务器证书是正确创建链所需的唯一证书。没有此证书,将无法创建正确的链。

找到正确的身份(最终用户、服务器)证书

与此相反的情况——当找到有效的服务器证书时显示此消息。

未找到第一个中间证书

当两个中间证书中的第一个未找到时,会显示此消息。该信息并未明确说明第二个中间证书也缺失,但另一方面它有助于确定服务器证书所签发的中间证书是否存在。此外,如果已提供第二个中间证书,也可能会显示此信息。

未找到第二个中间证书

与上述类似,但涉及第二个中间证书。不过,仍有可能使用第二个认证路径正确创建链,例如,使用第一个中间证书并用主证书替换第二个。

找不到一个或多个中间证书

此消息表示缺少一个或所有必需的中间证书,并在缺少根证书时显示。

找到 'n' 个正确的中间证书

此消息表示有效中间证书的数量。

未找到正确的根证书

缺少根证书被视为警告。当然,在服务器端配置证书时,不建议附加根证书,但如果你使用 mkchain 创建链,它会将链视为不完整,并显示关于链创建不正确的信息。

在其中一个证书中发现空的 CN 字段

此消息并非报告错误,而是指明某些证书可能缺少 CN 字段(参见 example/google.com)。通用名称字段标识与证书关联的主机名。RFC3280 没有要求颁发者 DN 必须包含 CN。大多数 CA 会在颁发者 DN 中包含 CN,但有些则不会,例如 Equifax CA。

必备条件

mkchain 使用外部工具,需要在运行前安装:

  • OpenSSL(测试于 1.1.0g/h)

此工具运行于以下环境:

  • GNU/Linux(测试于 Debian 和 CentOS)
  • Bash(测试于 4.4.19)

MacOS/FreeBSD:

  • 需要将 getopt(1) 替换为支持 GNU 风格长选项的版本(pkg install getopt)
  • 也可在 MacOS 上通过 coreutils 中的 greadlink 运行(通过 homebrew 安装)

其他

贡献

参见 此文件。

项目架构

参见 此页面。

许可证

GPLv3 : http://www.gnu.org/licenses/

自由软件,太棒了!

下载工具