我们刚刚安装了 Ubuntu 18.04 Server VM,以查看我们的 Chef 配置是否可以在这个新发行版上运行。
在单独的虚拟机上,我们有此版本的本地 apt 镜像:
# tree
.
├── extra
│ ├── binary-amd64
│ │ ├── Packages
│ │ └── Packages.gz
│ └── binary-i386
│ ├── Packages
│ └── Packages.gz
├── Release
└── Release.gpg
3 directories, 6 files
我们Release
使用以下命令对文件进行了签名:
/usr/bin/gpg -abs -o Release.gpg Release
经过上述操作后,签名似乎没问题:
# LANG=C gpg --verify /var/www/html/ubuntu-local/dists/bionic/Release.gpg /var/www/html/ubuntu-local/dists/bionic/Release
gpg: Signature made mar 29 may 2018 13:03:12 WEST using RSA key ID 271AFAF4
gpg: Good signature from "... <...@...>"
在客户端,我们导入了271AFAF4
密钥:
# LANG=C apt-key list
/etc/apt/trusted.gpg
--------------------
pub rsa2048 2014-10-27 [SC]
0F11 1A77 EE05 C406 2691 FC74 1794 5F7F 271A FAF4
uid [ unknown] ... <...@...>
客户端的repo定义文件是:
deb "http://localrepo/ubuntu-local" bionic extra
然而,每次运行时apt-get update
我都会得到:
W: GPG error: http://localrepo/ubuntu-local bionic Release: The following signatures were invalid: 0F111A77EE05C4062691FC7417945F7F271AFAF4
E: The repository 'http://localrepo/ubuntu-local bionic Release' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
但是,如上所示,签名是正确的。顺便提一下,同样的配置也起作用了xenial
(在 repo 配置文件中替换bionic
) ,我也尝试在 VM上xenial
添加repo ,结果相同。xenial
bionic
我见过其他答案,但这似乎不是它们的重复。
我错过了什么?
答案1
尝试使用这个 -
/usr/bin/gpg -bs -o Release.gpg Release
而不是这样 -
/usr/bin/gpg -abs -o Release.gpg Release
注意“-a”的区别。
来自 gpg 手册页 -
-a --armor
创建 ASCII 装甲输出。默认为创建二进制 OpenPGP 格式。
根据这-
...我们避免使用 ASCII 装甲文件的原因是它们不能被 SecureApt 直接使用。
笔记:
如果上述方法不起作用,作为上述方法的附加步骤,尝试将这两行添加到~/.gnupg/gpg.conf文件 -
cert-digest-algo SHA256
digest-algo SHA256