验证 WP-CLI 下载文件

本指南介绍如何在从互联网下载 WP-CLI 发行文件之后、将其安装到系统之前,使用密码学方法验证文件的来源与完整性。

为什么要验证下载文件?

验证下载文件的目的有两项:

  • 来源真实性:确认文件由 WP-CLI 维护者创建并签名。
  • 完整性:确认文件在下载过程中没有损坏或被篡改。

快速验证指南

下载 wp-cli.phar 后,可以使用 GPG 签名或校验和进行验证。

方法一:使用 GPG 签名验证(推荐)

GPG 签名能够验证文件完整性;在核对签名密钥身份之后,还能验证文件来源。因此,它比仅比较校验和提供更充分的验证。

第一步:下载签名文件

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar.asc

要下载特定版本,应从 GitHub Releases 获取发行文件与对应签名,将 X.X.X 替换成目标版本号:

curl -LO https://github.com/wp-cli/wp-cli/releases/download/vX.X.X/wp-cli-X.X.X.phar
curl -LO https://github.com/wp-cli/wp-cli/releases/download/vX.X.X/wp-cli-X.X.X.phar.asc

例如,下载 2.12.0 版本:

curl -LO https://github.com/wp-cli/wp-cli/releases/download/v2.12.0/wp-cli-2.12.0.phar
curl -LO https://github.com/wp-cli/wp-cli/releases/download/v2.12.0/wp-cli-2.12.0.phar.asc

第二步:导入 WP-CLI 发行签名密钥

WP-CLI 发行文件使用发行签名密钥签名。导入公钥:

curl -L https://raw.githubusercontent.com/wp-cli/builds/gh-pages/wp-cli.pgp | gpg --import

该密钥的指纹为:

63AF 7AA1 5067 C056 16FD  DD88 A3A2 E8F2 26F0 BC06

导入后,可以用以下命令查看并核对密钥指纹:

gpg --list-keys --with-fingerprint releases@wp-cli.org

输出中应包含以下内容:

pub   rsa2048 2018-05-31 [SC]
      63AF 7AA1 5067 C056 16FD  DD88 A3A2 E8F2 26F0 BC06
uid           [ unknown] WP-CLI Releases <releases@wp-cli.org>
sub   rsa2048 2018-05-31 [E]

旧版本说明:原指南指出,v1.5.1 之前的发行版本使用另一把密钥,其指纹为 3B91 91CD 3CF1 B5C5 10EE FAF6 AFAA E4A2 85E0 40A8。验证旧版本时,应查阅 builds 仓库 README 并导入对应密钥。原指南在这里写作“v1.5.1(2016 年 7 月)”;这一日期有误,官方 v1.5.1 发布公告日期为 2018 年 4 月 21 日。密钥是否适用于某个具体发行文件,应以该文件的实际签名及官方密钥资料为准。

第三步:验证签名

验证最新稳定版:

gpg --verify wp-cli.phar.asc wp-cli.phar

验证特定版本:

gpg --verify wp-cli-2.12.0.phar.asc wp-cli-2.12.0.phar

签名有效时,输出类似如下:

gpg: Signature made {DATE}
gpg:                using RSA key 63AF7AA15067C05616FDDD88A3A2E8F226F0BC06
gpg: Good signature from "WP-CLI Releases <releases@wp-cli.org>" [unknown]

还可能出现密钥尚未获得信任的警告:

gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.

如果尚未亲自验证并签署 WP-CLI 公钥,出现这种警告是正常的。Good signature 表示文件的签名与这把公钥匹配,签名所覆盖的内容没有被修改;它本身并不证明公钥持有者的身份。应同时核对上面的官方指纹,不能仅凭“签名有效”就跳过密钥身份核验。

方法二:使用校验和验证

无法使用 GPG 时,可以通过 SHA-512 或 SHA-256 校验和检查文件完整性,但校验和本身不能验证文件来源。

使用 SHA-512

下载 SHA-512 校验和文件:

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar.sha512

下载特定发行版本的校验和文件时,将 X.X.X 替换成版本号:

curl -LO https://github.com/wp-cli/wp-cli/releases/download/vX.X.X/wp-cli-X.X.X.phar.sha512

计算下载文件的校验和,与官方校验和文件中的值比较:

sha512sum wp-cli.phar
cat wp-cli.phar.sha512

两个哈希值必须完全一致。

使用 SHA-256

下载 SHA-256 校验和文件:

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar.sha256

下载特定发行版本的校验和文件时,将 X.X.X 替换成版本号:

curl -LO https://github.com/wp-cli/wp-cli/releases/download/vX.X.X/wp-cli-X.X.X.phar.sha256

计算下载文件的校验和,与官方校验和文件中的值比较:

sha256sum wp-cli.phar
cat wp-cli.phar.sha256

两个哈希值必须完全一致。

说明:校验和验证只能确认文件与公布的校验和相符,不能确认该文件确实由 WP-CLI 维护者创建。要同时验证来源与完整性,应使用 GPG 签名,并核对签名密钥身份。

到哪里寻找验证文件?

最新稳定版与每夜构建

最新稳定版和每夜构建的验证文件位于 builds 仓库的 phar 目录。

指南列出的文件包括:

  • wp-cli.phar.asc:最新稳定版的 GPG 签名。
  • wp-cli.phar.sha512:最新稳定版的 SHA-512 校验和。
  • wp-cli.phar.md5:MD5 校验和。MD5 已存在密码学缺陷,容易受到碰撞攻击,不适合安全验证。
  • wp-cli-nightly.phar.asc:每夜构建的 GPG 签名。
  • wp-cli-nightly.phar.sha512:每夜构建的 SHA-512 校验和。

特定版本发行

特定版本的验证文件可在 GitHub Releases 页面查找。原指南列举以下发行附件:

  • wp-cli-X.X.X.phar:WP-CLI PHAR 文件。
  • wp-cli-X.X.X.phar.asc:分离式 GPG 签名。
  • wp-cli-X.X.X.phar.gpg:内嵌 GPG 签名。
  • wp-cli-X.X.X.phar.sha512:SHA-512 校验和。
  • wp-cli-X.X.X.phar.sha256:SHA-256 校验和。
  • wp-cli-X.X.X.phar.md5:MD5 校验和,同样不适合安全验证。

各版本实际提供的附件可能不同,应先查看目标版本的附件清单,再下载对应文件;不要假定所有历史版本都具备上述全部文件。

包含验证步骤的完整安装示例

下面保留原指南下载、验证与安装 WP-CLI 的完整示例。这是类 Unix shell 的命令示例,需要 PHP、GPG 和相应系统权限。代码中的“验证成功后”是一条注释,脚本没有自动中止失败后的后续步骤;应分步执行,只有签名验证成功且密钥指纹相符时,才继续测试与安装。

# Download WP-CLI
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

# Download signature
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar.asc

# Import signing key (first time only)
curl -L https://raw.githubusercontent.com/wp-cli/builds/gh-pages/wp-cli.pgp | gpg --import

# Verify signature
gpg --verify wp-cli.phar.asc wp-cli.phar

# If verification succeeds, test it works
php wp-cli.phar --info

# Make executable and move to PATH
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp

# Verify installation
wp --info

补充资源

来源:Verifying WP-CLI Downloads,WP-CLI Development Group。正文基于 handbook 文档源文件翻译,代码与示例输出保留原样;补充了密钥信任、原文日期错误、历史附件差异和安装步骤失败处理的说明。本文代码未在当前环境运行。文档按 MIT License 提供。

MIT 版权与许可证全文
The MIT License (MIT)

Copyright (C) 2012-2022 WP-CLI Development Group (https://github.com/wp-cli/handbook/contributors)

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容