Ste*_*fan 5 ubuntu apt gnupg ubuntu-18.04
我在使用 apt 的 Ubuntu 18.04(仿生海狸)以及它处理可信密钥以验证存储库的方式上遇到了问题。
在 Ubuntu 14.04 上,我们曾经安装用于将我们的软件版本的存储库签名为/etc/apt/trusted.gpg.d. 通过这个 apt 知道密钥是可信的。
但是,这在 Ubuntu 18.04 上似乎不再适用。如果我在那里做同样的事情,我会在更新过程中收到错误:
# apt-get update
Hit:1 http://company.com/ubuntu-snapshot bionic InRelease
Reading package lists... Done
W: http://company.com/ubuntu-snapshot/dists/bionic/InRelease: The key(s) in the keyring /etc/apt/trusted.gpg.d/company-keys.gpg are ignored as the file is not readable by user '_apt' executing apt-key.
Run Code Online (Sandbox Code Playgroud)
明显的尝试修复它
# sudo chown -v _apt /etc/apt/trusted.gpg.d/company-keys.gpg
changed ownership of '/etc/apt/trusted.gpg.d/company-keys.gpg' from root to _apt
Run Code Online (Sandbox Code Playgroud)
不起作用,因为apt-get update然后产生:
# apt-get update
Hit:1 http://company.com/ubuntu-snapshot bionic InRelease
Reading package lists... Done
W: http://company.com/ubuntu-snapshot/dists/bionic/InRelease: The key(s) in the keyring /etc/apt/trusted.gpg.d/company-keys.gpg are ignored as the file has an unsupported filetype.
Run Code Online (Sandbox Code Playgroud)
密钥本身是有效的,如果我使用以下行添加它,一切都会按预期进行:
wget -O - http://company.com/key.gpg | sudo apt-key add -
Run Code Online (Sandbox Code Playgroud)
不幸的是,后者不是我们的选择,因为我们想要部署我们自己的密钥并且还能够更改/撤销它们。
我既无法弄清楚为什么 apt 拒绝 中的密钥环/etc/apt/trusted.gpg.d,也找不到描述 apt 对新 Ubuntu 版本的不同期望的更改日志。如果您指出一些资源来解决这个问题,我会很高兴。
听起来您的密钥文件 ( /etc/apt/trusted.gpg.d/company-keys.gpg) 的格式不受支持。手册apt-key页解释了支持的内容:
apt-key 仅支持扩展名为“gpg”的文件中的二进制 OpenPGP 格式(也称为“GPG 密钥公共环”),而不支持较新的 gpg(1) 版本中引入的作为密钥环文件默认值的密钥箱数据库格式。因此,要与任何 apt 版本一起使用的二进制密钥环文件应始终使用 gpg --export 创建。
或者,如果所有应使用创建的密钥环的系统至少安装了 apt 版本 >= 1.4,则您可以使用带有“asc”扩展名的 ASCII 装甲格式,而不是使用 gpg --armor --export 创建。
要检查文件格式,请运行file /etc/apt/trusted.gpg.d/company-keys.gpg如果它显示“GPG 密钥公共环”,那么我希望它能够工作,但我无法解释您所看到的问题。
如果显示“GPG 密钥箱数据库”,则问题出在文件格式上。您可以使用此命令对其进行转换(感谢@Wildcard 将其包含在他的答案中):
gpg --no-default-keyring --keyring /etc/apt/trusted.gpg.d/company-keys.gpg --export > /etc/apt/trusted.gpg.d/company-keys.fixed.gpg
Run Code Online (Sandbox Code Playgroud)
如果您反复看到此问题,那么您可能需要检查如何将密钥安装到/etc/apt/trusted.gpg.d/. 我遇到了一个问题,尝试通过运行列出密钥环的内容gpg --keyring /etc/apt/trusted.gpg.d/mine.gpg会导致文件被创建为不受支持的密钥箱文件。随后将密钥添加到该密钥环不允许使用该密钥。
还值得注意的是,显然没有理由使用apt-key add. 从手册页:
应将密钥环直接放置在 /etc/apt/trusted.gpg.d/ 目录中,并使用描述性名称和“gpg”或“asc”作为文件扩展名,而不是使用此命令。
因此,如果您正在使用,apt-key add可以考虑直接复制文件。
您可以使用 gpg 的--dearmor选项将 ASCII 装甲密钥(被aptin拒绝的密钥)转换trusted.gpg.d为二进制格式,这正是所apt期望的。
gpg --dearmor keyfile
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6724 次 |
| 最近记录: |