近日,看着各为大佬都在更新自己的Kali 系统,今天正好无事也更新一下....

update / upgrade

妈卖批,不让更新?出错了?

华丽分割线......


首先,这个问题其实也出现在近期 Ubuntu 系统的更新上。

Kali 和 Ubuntu 都是基于 Debian 的发行版,因此都继承使用了 apt 包管理器。

为了保证更新软件包的可靠性,更新服务器会使用GPG对发布的所有数据包进行签名,以此来防止数据包被篡改或者冒名顶替。

Kali Linux 官方拥有自己的 GPG 公私钥对,公钥被其部署在每一个安装了Kali Linux系统的计算机中。同时官方所有的更新包都使用自己的私钥进行了签名,客户端会使用自己计算机中 Kali 官方的公钥来对这个签名进行验证,以此来确保更新数据包确实来自于Kali官方,并且传输过程中没有被篡改。

这次 Kali 更新时的报错信息就明确说明原因是密钥过期,同时给出了过期密钥的 ID。

简单来理解,公钥和私钥都是个密码。但即使再复杂的密码,如果用的时间足够长的话,都有可能被破解(尤其是在这个量子计算飞速发展的时代)。因此每个公私钥对在生成的时候,都要设置一个有效期,密钥一旦过期,则被视为不再安全。通常密钥有效期以年为时间单位,一般不超过 5 年。

我们运行下面的命令来查看系统里所有的密钥信息:

# apt-key list

输出结果的最后一行(图忘记截了...Sorry)就是导致这次问题的公钥,到期时间是2018年2月2日(有效期大约是 6 年)。

既然是Kali官方的密钥过期,那就需要 Kali 官方自己先更新一下,然后再把更新后的公钥发给我们。

其实这件事Kali官方已经做了,但作为 Kali 系统使用者的我们,也要更新一下自己电脑中的对应公钥。

获得新的公钥可以有几种方法,

1、我们可以到Kali官方的密钥下载站上自己下载,然后将下载的新公钥导入自己系统。这个过程可以通过系统命令直接完成,也可以手动下载后,再使用系统命令导入密钥。

2、我们也可以从GPG的密钥发布服务器上下载Kali的新公钥。

作为一个受信的仲裁方,GPG 在全球提供大量的密钥服务器,这些服务器之间会进行定期的数据同步,我们可以任选一个 GPG 密钥服务器来下载密钥。这些服务器也是我们用来验证密钥所有者的重要途径。

具体更新方法有以下几种方法:(任选一种即可)

1、# apt-key adv --keyserver keys.gnupg.net --recv-keys ED444FF07D8D0BF6

2、# wget -q -O - archive.kali.org/archive-key.asc | apt-key add

3、# gpg --keyserver hkp://pgpkeys.mit.edu --recv-key ED444FF07D8D0BF6

# gpg -a --export ED444FF07D8D0BF6 | sudo apt-key add -

4、# wget https://http.kali.org/kali/pool/ ... ring_2018.1_all.deb

# apt install ./kali-archive-keyring_2018.1_all.deb

成功更新密钥之后,我们就可以正常的 update / upgrade 了。

重复输入apt-getupdate & apt-get upgradeapt-get dist-upgrade直至没有可更新的软件为止,然后输入apt-get clean,最后输入reboot重启。

更新完毕。

PS:附赠一个清华大学更新源

deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free

命令:vim /etc/apt/sources.list

最后修改:2021 年 03 月 09 日
如果觉得我的文章对你有用,请随意赞赏