4.2. 红帽网络软件包的电子签名


所有通过红帽网络发布的软件包都应该有一个数字签名。数字签名根据唯一的私钥创建,并可使用对应的公钥验证。在创建软件包后,SRPM (源 RPM) 和 RPM 可以使用一个 GnuPG 密钥进行数字签注。在安装软件包前,公钥可以被用来验证这个软件包是否被可信任的一方签注并在签注后没有被修改。

4.2.1. 生成 GnuPG 密钥对

GnuPG 密钥对由私钥和公钥组成。要生成密钥对:
  1. 请作为 root 用户在 shell 提示符后输入以下命令:
    gpg --gen-key
    非 root 用户无法生成 GPG 密钥对。与非 root 用户不同哦功能,root 用户可以锁定内存页,就是说永远无法在磁盘中写入信息。
  2. 在执行了生成一个密钥对的命令后,您将会看到与以下类似的、包括了密钥选项的引导屏幕:
    gpg (GnuPG) 2.0.14; Copyright (C) 2009 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.
    
    Please select what kind of key you want:
       (1) RSA and RSA (default)
       (2) DSA and Elgamal
       (3) DSA (sign only)
       (4) RSA (sign only)
    Your selection?
    
  3. 选择选项:(2) DSA 和 ElGamal。这个选项允许您创建一个数字签名并使用两种加密技术进行加密/解密。输入 2 后按 Enter 键。
  4. 选择密钥的长度,即密钥应有的长度。密钥越长,它被破解的可能性就越小。推荐您创建最短为 2048 位的密钥。
  5. 下一个选项将让您指定密钥的有效期。如果您指定了密钥过期的日期,任何使用您的公钥的用户都需要被告知过期的时间并在过期后获得新密钥。我们推荐您使用没有过期时间的设置。如果您没有选择一个过期的日期,会提示您确认您的选择:
    Key does not expire at all Is this correct (y/n)?
    
  6. y 来确认您的决定。
  7. 您的下一个任务是提供一个包括您的名称、电子邮件地址和注释(可选的)的用户 ID,其中的每项都需要独立的内容。完成后,您会看到您输入内容的总结。
  8. 确定您的选择后,您需要输入一个密码短语(passphrase)。

    注意

    和您的帐户密码一样,好的密码短语对 GnuPG 的安全性非常重要。在您的密码短语中使用混和的大小写字母、数字和标点符号将会增加其安全性。
  9. 在输入并验证了您的密码短语后,就生成了您的密钥。此时会出现一个类似如下的信息:
    We need to generate a lot of random bytes. It is a good idea to perform some
    other action (type on the keyboard, move the mouse, utilize the disks)
    during the prime generation; this gives the random number generator a
    better chance to gain enough entropy.
    
    +++++.+++++.++++++++....++++++++++..+++++.+++++.+++++++.+++++++ +++.
    ++++++++++++++++++++++++++++++++++++++..........................++++
    
    页面中的活动停止后,会将新的密钥保存在 root 用户主目录的 .gnupg 目录中。这是保存 root 用户所生成密钥的默认位置。
请使用以下命令列出 root 密钥:
gpg --list-keys
输出内容类似如下:
gpg: key D97D1329 marked as ultimately trusted
public and secret key created and signed.

gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   3  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 3u
gpg: next trustdb check due at 2013-08-28
pub   2048D/D97D1329 2013-08-27 [expires: 2013-08-28]
      Key fingerprint = 29C7 2D2A 5F9B 7FF7 6411  A9E7 DE3E 5D0F D97D 1329
uid                   Your Name<you@example.com>
sub   2048g/0BE0820D 2013-08-27 [expires: 2013-08-28]
要获得您的公钥,使用以下命令:
gpg --export -a 'Your Name' > public_key.txt
您的公钥被写在 public_key.txt 文件中。
这个公钥非常重要,必须将其部属在所有通过 yum 接收自定义软件包的客户端系统中。《红帽网络客户端配置指南》介绍了在一个机构的客户端系统中部属该密钥的方法。
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部