首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用asc签名文件验证文件?

如何使用asc签名文件验证文件?
EN

Server Fault用户
提问于 2018-02-08 02:49:15
回答 2查看 56.1K关注 1票数 37

例如,该项目提供一个带有PGP签名的*.asc文件来验证下载的内容(与校验和不同,您可以看到空列):https://ossec.github.io/downloads.html

我该如何使用这个文件?我尝试了gpg --verify和其他变体,但它似乎与文件的名称相匹配,但是下载的文件名并不完全相同.不知道该怎么做。

EN

回答 2

Server Fault用户

回答已采纳

发布于 2018-02-08 03:34:00

  1. 下载密钥文件: wget https://ossec.github.io/files/OSSEC-ARCHIVE-KEY.asc
  2. 检查密钥文件,以确认它将EE1B0E6B2D8387B7作为其密钥。gpg --键-格式长-列表-选项显示-密钥环OSSEC-存档-KEY.asc
  3. 如果正确,则导入键: gpg --导入OSSEC-存档-KEY.asc
  4. 下载软件包wget https://github.com/ossec/ossec-hids/archive/2.9.3.tar.gz
  5. 下载签名文件https://github.com/ossec/ossec-hids/releases/download/2.9.3/ossec-hids-2.9.3.tar.gz.asc
  6. 验证它gpg --验证ossec-hids-2.9.3.tar.gz.asc 2.9.3.tar.gz输出gpg:签名在12月23日16:13:01 2017年UTC gpg:使用RSA密钥EE1B0E6B2D8387B7 gpg:来自“ScottR.Shinn scott@atomicorp.com”的良好签名未知 gpg:警告:该密钥未经可信签名认证!gpg:没有迹象表明签名属于所有者。主密钥指纹: B50F B194 7A0A E311 45D0 5 5FAD EE1B 0E6B 2D83 87B7
票数 36
EN

Server Fault用户

发布于 2020-12-09 05:18:02

这进一步完善了ЕвгенийНовиков的S答案。它不使用不推荐的ЕвгенийНовиков命令,也避免了用于身份验证的可能伪造的密钥ID:

下载文件

获取作者用来颁发签名的OpenPGP证书:

代码语言:javascript
运行
复制
wget https://ossec.github.io/files/OSSEC-ARCHIVE-KEY.asc

然后获取提交人签发的独立签名:

代码语言:javascript
运行
复制
wget https://github.com/ossec/ossec-hids/releases/download/2.9.3/ossec-hids-2.9.3.tar.gz.asc

最后获取要验证的文件:

代码语言:javascript
运行
复制
wget https://github.com/ossec/ossec-hids/archive/2.9.3.tar.gz

显示和彻底比较指纹

导入证书前,显示完整的40个字符长OpenPGP证书指纹,并确保其与作者证书的指纹完全匹配。

注意:你应该通过一个安全的渠道从作者那里获取指纹。除了与作者见面交换指纹之外,第二个最好的方法是在作者的网站上显示一个指纹,并通过一个https:计划URI访问。作者确实出版了一个这里

注意:如果作者只显示短ID (8个字符长,如2D8387B7)或长ID (16个字符长,例如EE1B0E6B2D8387B7),最好持怀疑态度,并要求作者发布完整的指纹,因为短ID和长ID都已被证明是可伪造的(请阅读更多的这里)。

代码语言:javascript
运行
复制
gpg --import --import-options show-only OSSEC-ARCHIVE-KEY.asc

旧版本的GnuPG默认不会显示完整的指纹。如果没有显示--fingerprint标志,请尝试添加它。

输出应该如下所示:

代码语言:javascript
运行
复制
pub   rsa4096 2011-03-10 [SC]
      B50FB1947A0AE31145D05FADEE1B0E6B2D8387B7
uid                      Scott R. Shinn <scott@atomicorp.com>
sub   rsa4096 2011-03-10 [E]

本例中的OpenPGP证书指纹是:

代码语言:javascript
运行
复制
B50FB1947A0AE31145D05FADEE1B0E6B2D8387B7

有时指纹会以4个字符的片段显示,每个字符都有空格,这样人类就能更容易地阅读。在这种情况下,忽略空白比较是安全的:

代码语言:javascript
运行
复制
B50F B194 7A0A E311 45D0  5FAD EE1B 0E6B 2D83 87B7

注意:不要只比较指纹的部分,因为这再次为欺骗攻击打开了空间。

为了方便和彻底的比较,只需在您选择的文本编辑器中复制在后续行中格式化的两个指纹,并在视觉上匹配它们。

导入证书

如果完整指纹完全匹配,则将证书导入本地GnuPG密钥环:

代码语言:javascript
运行
复制
gpg --import OSSEC-ARCHIVE-KEY.asc

验证文件

现在,您可以加密地验证该文件与作者发布和签名的文件完全匹配。

代码语言:javascript
运行
复制
gpg --verify ossec-hids-2.9.3.tar.gz.asc 2.9.3.tar.gz

注意:一定要始终列出分离的签名和要在这里进行身份验证的文件。除了分离的签名之外,还有其他类型的签名,如果只列出签名文件,没有意识到这会导致错误的真实性假设。

输出应该如下所示:

代码语言:javascript
运行
复制
gpg: Signature made Sa 23 Dez 2017 17:13:01 CET
gpg:                using RSA key EE1B0E6B2D8387B7
gpg: Good signature from "Scott R. Shinn <scott@atomicorp.com>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: B50F B194 7A0A E311 45D0  5FAD EE1B 0E6B 2D83 87B7

注意:如果文件已被操纵,您应该看到如下内容:

代码语言:javascript
运行
复制
gpg: Signature made Sa 23 Dez 2017 17:13:01 CET
gpg:                using RSA key EE1B0E6B2D8387B7
gpg: BAD signature from "Scott R. Shinn <scott@atomicorp.com>" [unknown]

如果发生这种情况,您不应该使用或执行文件的内容作为预防措施,并与作者联系。如果无法联系到作者,那么提高公众意识是第二件最好的事情。

对作者一次又一次发布的文件进行身份验证

最后一步中显示的警告是一个提示,即在确保导入的作者的签名证书是合法的之后,用您自己的个人OpenPGP证书来验证它是一个好主意。

如果您长期保存和维护您的GnuPG密钥存储库,您就不需要再次验证每个新文件的作者证书,从而使整个过程变得更容易,也不太容易在将来受到攻击。

注意:个人OpenPGP证书是必须的。创建一个人的指导不是这个答案的主题。

签发证书的工作如下:

代码语言:javascript
运行
复制
gpg --lsign B50FB1947A0AE31145D05FADEE1B0E6B2D8387B7

它告诉GnuPG和您自己,您已经彻底验证了作者的证书。

之后,gpg --verify ossec-hids-2.9.3.tar.gz.asc 2.9.3.tar.gz的输出看起来更干净、更可靠,如下所示:

代码语言:javascript
运行
复制
gpg: Signature made Sa 23 Dez 2017 17:13:01 CET
gpg:                using RSA key EE1B0E6B2D8387B7
gpg: Good signature from "Scott R. Shinn <scott@atomicorp.com>" [full]
票数 13
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/896228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档