spatie / ssl-certificate-chain-resolver
SSL证书链解析器
Requires
- php: ^8.0
- guzzlehttp/guzzle: ^7.4
- illuminate/collections: ^9.17
- phpseclib/phpseclib: ^3.0
- symfony/console: ^6.0.9|^7.0
Requires (Dev)
- phpunit/phpunit: ^9.5
README
所有操作系统都包含一组默认受信任的根证书。但是证书颁发机构通常不会使用它们的根证书来签名客户证书。它们使用所谓的中间证书代替,因为这些可以更频繁地轮换。
如果您的服务器上未安装所有中间证书,一些客户端(主要是移动浏览器)会认为您正在使用不安全的连接。
此工具可以帮助您解决不完整的证书链问题,也被Qualys SSL服务器测试报告为“额外下载”。
Spatie是比利时安特卫普的一家网络设计公司。您可以在我们的网站上找到我们所有开源项目的概述这里。
支持我们
我们在创建最佳开源包方面投入了大量资源。您可以通过购买我们的付费产品之一来支持我们。
我们非常感谢您从您家乡给我们寄明信片,说明您正在使用我们的哪个包。您可以在我们的联系页面上找到我们的地址。我们将发布所有收到的明信片在我们的虚拟明信片墙上。
明信片软件
您可以自由使用此包(它是MIT许可的),但如果它进入您的生产环境,您需要向我们寄送一张从您家乡的明信片,说明您正在使用我们的哪个包。
我们的地址是:Spatie,Kruikstraat 22,2018 安特卫普,比利时。
最好的明信片将被发布在我们的网站上开源页面。
安装
您可以使用Composer通过运行以下命令来安装此包。
composer global require spatie/ssl-certificate-chain-resolver
用法
假设您有一个不完整的证书,名为cert.crt
。要生成包含证书和整个信任链的文件,您可以使用以下命令
ssl-certificate-chain-resolver resolve cert.crt
包含证书和整个信任链的文件将保存为certificate-including-trust-chain.crt
您也可以将输出文件的名称作为第二个参数传递
ssl-certificate-chain-resolver resolve cert.crt your-output-file.crt
如果输出文件已存在,您将被询问是否覆盖它。
更新
您可以通过运行以下命令将ssl-certificate-chain-resolver
更新到最新版本:
composer global update spatie/ssl-certificate-chain-resolver
限制
目前此包不适用于实体验证证书或由Let's Encrypt签发的证书。非常欢迎添加此功能的PR。
测试
该包包含功能测试和单元测试。
您可以使用vendor/bin/codecept run
自行运行它们
致谢
此包受到了cert-chain-resolver的启发,该包由Jan Žák编写。一些文本,主要是关于信任链的背景,是从他的仓库的readme中复制的。
背景:信任链
所有操作系统都包含一组默认的受信任根证书。但证书颁发机构通常不会使用它们的根证书来签发客户证书。相反,它们使用所谓的中间证书,因为它们可以更频繁地轮换。
证书可以包含一个特殊的权威信息访问扩展(RFC-3280)以及指向颁发者证书的URL。大多数浏览器可以使用AIA扩展来下载缺失的中间证书,以完成证书链。这就是“额外下载”消息的确切含义。但是,一些客户端,主要是移动浏览器,不支持这个扩展,因此它们将此类证书报告为不受信任。
这会导致像这样的“不受信任”警告,因为浏览器认为你正在一个不安全的连接上。
服务器应该始终发送一个完整的链,这意味着连接所有从证书到受信任根证书(排除,按此顺序)的证书,以防止此类问题。因此,当在服务器上安装SSL证书时,你应该安装所有中间证书。你应该能够从颁发者那里获取中间证书,并将它们自己连接起来。
此工具通过遍历证书的AIA扩展字段来自动化这项无聊的任务。
关于Spatie
Spatie是比利时安特卫普的一家网络设计公司。您可以在我们的网站上找到我们所有开源项目的概述这里。
许可
MIT许可证(MIT)。有关更多信息,请参阅许可文件。