roave/composer-gpg-verify

此包已被弃用,不再维护。没有建议的替代包。

Composer插件,用于验证下载依赖项的GPG签名,强制执行受信任的GIT标签

安装: 8

依赖者: 0

建议者: 0

安全性: 0

星标: 40

关注者: 17

分支: 3

开放问题: 2

类型:composer-plugin

1.0.0 2017-06-08 16:54 UTC

This package is auto-updated.

Last update: 2022-12-01 00:12:27 UTC


README

Packagist Build Status Scrutinizer Code Quality Code Coverage

此包提供了可插拔的composer标签签名验证。

具体来说,此包所做的只是当遇到不受信任的包时停止安装过程。

此包的目的是作为第一个参考实现,以后在composer本身中使用,以强制执行良好的依赖项检查卫生。

使用方法

此包不提供可用的公共API,但在composer安装设置期间将只起作用

composer require roave/composer-gpg-verify --prefer-source

请注意,如果您有不受信任的依赖项,上述操作可能已经失败。为了跳过此包提供的检查,请在尚未确定不受信任的依赖项的情况下使用--no-scripts标志

composer require roave/composer-gpg-verify --prefer-source --no-scripts

受信任的依赖项

此包广泛使用GPG来验证所有下载的依赖项都具有良好的和受信任的GIT标签或提交签名。

目前,此包将仅使用您的本地GPG信任数据库来确定哪些签名是受信任的,或不受信任的,并且除了读取之外不会对其进行任何操作。

实际上,这意味着

  • 您安装的每个包都必须是git仓库(使用--prefer-source
  • 每个仓库的HEAD(当前状态)必须是已签名的标签或已签名的提交
  • 您必须对每个标签/提交签名有本地公钥的副本
  • 您必须明确信任、本地签名或签名每个涉及的公钥

虽然这对大多数用户来说可能听起来像是一种无用的复杂性,因为他们只是信任packagist提供“良好”的依赖项,但这些可能已被攻击者伪造,他们从您最喜欢的维护者那里窃取了信息。

良好的依赖项卫生极为重要,此包鼓励维护者始终签名他们的发布,并鼓励用户始终检查它们。

信任某人的工作

假设您下载了一个签名的包,您可能会在第一次安装期间遇到以下失败

composer require some-vendor/some-package --prefer-source
# ... lots of lines here ...
The following packages need to be signed and verified, or added to exclusions:

some-vendor/some-package
[SIGNED] [NOT VERIFIED] Commit #4b825dc642cb6eb9a060e54bf8d69288fbee4904 (Key AABBCCDDEEFF1122)
Command: git verify-commit --verbose HEAD
Exit code: 1
Output: tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904
author Mr. Maintainer <maintainer@example.com> 1495040303 +0200
committer Mr. Maintainer <maintainer@example.com> 1495040303 +0200

signed commit
gpg: Signature made Mi 17 Mai 2017 18:58:23 CEST
gpg:                using RSA key AABBCCDDEEFF1122
gpg: Can't check signature: No public key
... more lines ...

这意味着some-vendor/some-package不受信任。

那个AABBCCDDEEFF1122是您缺少的密钥。让我们下载它

gpg --recv-keys AABBCCDDEEFF1122

现在密钥已存在于您的本地数据库中,但尚未受信任。

重要:不要盲目信任或签名他人的GPG密钥 - 只有在您确实知道密钥是由他们提供的,并且您至少略知一二的情况下才这样做。通常,联系密钥作者是检查真实性的最佳方式。

要信任密钥,您可以编辑它

gpg --edit-key AABBCCDDEEFF1122
...

gpg> trust 

...

Please decide how far you trust this user to correctly verify other users' keys
(by looking at passports, checking fingerprints from different sources, etc.)

  1 = I don't know or won't say
  2 = I do NOT trust
  3 = I trust marginally
  4 = I trust fully
  5 = I trust ultimately
  m = back to the main menu

Your decision? 3

gpg> save

或者,如果您想签名gpg密钥,您可以创建本地签名

gpg --lsign-key AABBCCDDEEFF1122

如果您确实信任一个密钥,您可以创建一个通用的签名,该签名可以上传

gpg --sign-key AABBCCDDEEFF1122

一旦您完成了上述操作之一(签名或信任),然后您可以继续您的composer安装或升级过程。

示例

请参考示例目录来运行您系统中的示例。所有示例都设计为不会修改您当前的GPG设置。

限制

此包仍存在一些严重限制

  • 需要运行 gpg 2.x - 这意味着您可能应该使用Ubuntu 16.04或等效版本。
  • 需要 gpg 2.x
  • 它只能验证下载的GIT仓库的签名:任何非git包将导致验证失败

随着库进一步版本的开发,这些限制最终将得到缓解。