use*_*531 6 gnu hashsum gpg signature
apt-get抱怨签名无效且InRelease文件未签名(请参阅使用 Centos 对 .deb 包进行签名以了解背景)。在服务器上,我已经验证使用gpg它InRelease实际上已签名。
根据Debian 9、APT 和 "GPG error: ... InRelease: The following signatures was invalid:",需要执行以下操作:
调整 $HOME/.gnupg/gpg.conf 中的personal-digest-preferences 和personal-digest-preferences 以从GPG 偏好中消除SHA-1。这可以防止问题再次出现在新密钥上。
在查看我的 reprepro 设置后,我在 Release 文件(和 InRelease clearsign 签名)和单个 Packages 文件下都显示了 SHA1,所以我希望这样做会成功。
~/.gnupg/gpg.conf似乎表明我将使用 , 中描述的哈希算法default-preference-list,然后列出首先使用的算法(如果可用)。
[michael@bigbox ~]$ cat ~/.gnupg/gpg.conf
# Prioritize stronger algorithms for new keys.
default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 BZIP2 ZLIB ZIP Uncompressed
# Use a stronger digest than the default SHA1 for certifications.
cert-digest-algo SHA512
Run Code Online (Sandbox Code Playgroud)
man gpg 状态:
--personal-digest-preferences string 将个人摘要首选项列表设置为字符串。使用 gpg --version 获取可用算法列表,并使用 none 根本不设置首选项。这允许用户安全地覆盖由收件人密钥首选项选择的算法,因为 GPG 将只选择所有收件人都可以使用的算法。此列表中排名最高的摘要算法也用于不加密的签名(例如--clear-sign 或--sign)。
我看到gpg --version事实上显示 SHA1 被包含在内。
michael@bigbox ~]$ gpg --version
gpg (GnuPG) 2.0.22
libgcrypt 1.5.3
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Home: ~/.gnupg
Supported algorithms:
Pubkey: RSA, ?, ?, ELG, DSA
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
CAMELLIA128, CAMELLIA192, CAMELLIA256
Hash: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2
Run Code Online (Sandbox Code Playgroud)
我只有一把钥匙。
[michael@bigbox ~]$ gpg --list-keys
/home/michael/.gnupg/pubring.gpg
--------------------------------
pub 2048R/542342AE 2018-02-08
uid Michael Jones <tenthousandants@gmail.com>
sub 2048R/4D73CC3A 2018-02-08
Run Code Online (Sandbox Code Playgroud)
并试一试...
[michael@bigbox ~]$ gpg --edit-key 542342AE
gpg (GnuPG) 2.0.22; Copyright (C) 2013 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Secret key is available.
pub 2048R/542342AE created: 2018-02-08 expires: never usage: SC
trust: ultimate validity: ultimate
sub 2048R/4D73CC3A created: 2018-02-08 expires: never usage: E
[ultimate] (1). Michael Jones <tenthousandants@gmail.com>
gpg> setpref SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed
Set preference list to:
Cipher: AES256, AES192, AES, CAST5, 3DES
Digest: SHA512, SHA384, SHA256, SHA224, SHA1
Compression: ZLIB, BZIP2, ZIP, Uncompressed
Features: MDC, Keyserver no-modify
Really update the preferences? (y/N)
Run Code Online (Sandbox Code Playgroud)
是否SHA1仍然存在?
请注意,上面引用的Debian 9、APT 和“GPG 错误:... InRelease:以下签名无效:”指出必须将personal-digest-preferencesin调整$HOME/.gnupg/gpg.conf两次,所以我担心可能还有其他需要是变化。
我认为这无关紧要,但我正在运行 Centos7。
如何防止 gpg 包含 SHA1?
小智 3
当谈到 DEB 包和存储库时,我们讨论的是显式创建签名。这与使用已知收件人密钥对消息进行加密和签名不同。在这种情况下,gpg 使用接收者的关键偏好,结合您自己的本地偏好来制定合适的算法选择
不幸的是,目前没有太多可用于独立签名的选项。即使在 GPG-2 中,也只有一个禁止密码算法的选项,但没有禁止摘要(签名)算法的选项。
因此,您唯一能做的就是在您的偏好中明确定义固定的摘要(签名)算法。因为当 debian 工具调用本地 GPG 安装来制作签名时,将使用它。显然,这有一个缺点,会干扰签名算法的自动选择;这意味着,设置该选项后,仅支持 SHA1 的接收者将无法再验证您的签名。
无论如何,将以下内容设置为您的~/.gnupg/gpg.conf
digest-algo SHA256
Run Code Online (Sandbox Code Playgroud)
也许您还应该在那里放置一个个人偏好列表,这会影响创建新密钥时的默认值(但因此并不能立即解决手头的问题 - 它也不会造成伤害)
personal-digest-preferences SHA512,SHA384,SHA256,SHA224
default-preference-list SHA512,SHA384,SHA256,SHA224,AES256,AES192,AES,CAST5,3DES,BZIP2,ZIP,ZLIB,Uncompressed
Run Code Online (Sandbox Code Playgroud)
关于 SHA1 和 3DES,它们是 PGP 协议的最低公分母,因此硬连线到软件中。它们会自动添加到您的首选项列表的末尾,以确保与协议的其他(弱)实现的互操作性。
由于 SHA1 是必须实现的哈希算法,因此如果它没有显式地出现在列表中,则它默认位于末尾。
此外,SHA1 仍然是唯一使用/允许生成 V4 指纹的算法(参见第 12.2 节)
好吧,也许是时候继续前进了,但是只要标准不升级,我们(用户)能做的并不多......
| 归档时间: |
|
| 查看次数: |
3125 次 |
| 最近记录: |