我为我的雇主维护一个小型的 Debian 存储库,最近由于 SHA1 弃用我们遇到了一些问题。
我们使用 4096 位 RSA 密钥对软件包进行签名。为了对存储库进行签名,我使用了以下 GPG 命令:
[email protected]:/var/www/debian/dists/xenial# cat /root/.gnupg/gpg.conf
cert-digest-algo SHA512
digest-algo SHA512
disable-cipher-algo SHA1
default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed
personal-digest-preferences SHA512
[email protected]:/var/www/debian/dists/xenial# gpg -a --detach-sign \
--personal-digest-preferences SHA512 \
--default-key=XXXXXXXX -o Release.gpg Release
检查签名以确保它没有使用 SHA1:
[email protected]:/var/www/debian/dists/xenial# gpg --list-packets Release.gpg
:signature packet: algo 1, keyid XXXXXXXXXXXXXXXX
version 4, created 1484090425, md5len 0, sigclass 0x00
digest algo 10, begin of digest 3f 00
hashed subpkt 2 len 4 (sig created 2017-01-10)
subpkt 16 len 8 (issuer key ID XXXXXXXXXXXXXXXX)
data: [4095 bits]
据我所知,“摘要算法 10”表示它使用 SHA512 进行摘要。SHA1 将是“摘要算法 2”。
在客户端上,我做了以下事情:
root@othermachine:/root# echo "deb https://debian.name-not-revealed.com xenial main" >> /etc/apt/sources.list
root@othermachine:/root# apt-key adv --keyserver pool.sks-keyservers.net --recv-keys 0xXXXXXXXX
root@othermachine:/root# apt-get update
Hit:1 http://eu-central-1.ec2.archive.ubuntu.com/ubuntu xenial InRelease
Get:2 http://eu-central-1.ec2.archive.ubuntu.com/ubuntu xenial-updates InRelease [102 kB]
Get:3 http://eu-central-1.ec2.archive.ubuntu.com/ubuntu xenial-backports InRelease [102 kB]
Hit:4 http://security.ubuntu.com/ubuntu xenial-security InRelease
Hit:5 http://ppa.launchpad.net/ondrej/php/ubuntu xenial InRelease
Ign:6 https://debian.name-not-revealed.com xenial InRelease
Hit:7 https://debian.name-not-revealed.com xenial Release
Fetched 204 kB in 12s (15.9 kB/s)
Reading package lists... Done
W: https://debian.name-not-revealed.com/dists/xenial/Release.gpg: Signature by key 20F6C08B949AF3A95ECD7F6FDCDE5A8971317416 uses weak digest algorithm (SHA1)
为什么仍然会出现此警告?为什么 apt-get 认为我仍在使用 SHA1?
起初我以为密钥是罪魁祸首,因此我根据此 GPG 迁移指南创建了一个新的密钥:https://wiki.ubuntu.com/SecurityTeam/GPGMigration
但是我仍然收到“消化不良”警告。我束手无策。我做错了什么?
答案1
我自己找到了解决方案:我使用了错误版本的 GPG。gpg 1.x 忽略了所有“不使用 SHA1”选项。要使用这些标志,您必须使用 gpg 2.x(称为“gpg2”)。