![如何使用特定私钥对文件进行分离签名? ||为什么这会失败?](https://linux22.com/image/140510/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E7%89%B9%E5%AE%9A%E7%A7%81%E9%92%A5%E5%AF%B9%E6%96%87%E4%BB%B6%E8%BF%9B%E8%A1%8C%E5%88%86%E7%A6%BB%E7%AD%BE%E5%90%8D%EF%BC%9F%20%7C%7C%E4%B8%BA%E4%BB%80%E4%B9%88%E8%BF%99%E4%BC%9A%E5%A4%B1%E8%B4%A5%EF%BC%9F.png)
我有一个.tar.xz
文件,我想使用我的gpg
私钥对其进行分离签名。
问题是,我有多个私钥导入到我的密钥环中,需要选择使用哪一个。
进步
我正在尝试执行:
gpg --output somefile.tar.xz.sig --detach-sig somefile.tar.xz --local-user [fingerprint]
但我收到错误:
gpg: Note: '--local-user' is not considered an option
gpg: can't open '--local-user': No such file or directory
gpg: signing failed: No such file or directory
我在这里做错了什么以及如何解决它?
答案1
解决方案
我已经使用以下方法来纠正这种情况工作示例:
gpg --local-user [fingerprint] --sign --armor --output somefile.tar.xz.asc --detach-sig somefile.tar.xz
解析
gpg
:进行签名的程序;在我的例子中版本是2.2.4--local-user
:在我的例子中,将 ID 作为参数或指纹。--sign
: 要做gpg
的动作。--armor
:输出人类可读的字符而不是二进制。--output
gpg
: 采用一个不存在的文件名作为参数,这是的工作结果。如果存在,它会询问您是否要覆盖。--detach-sig
:指示gpg
不直接对文件进行签名,创建单独的签名文件。
非工作示例
如果您将
--local-user
及其参数放在末尾,而不是开头,您将得到我的问题中的错误:gpg --sign --armor --output somefile.tar.xz.asc --detach-sig somefile.tar.xz --local-user [fingerprint]
因此, the
--local-user
及其参数应首先出现(如果可能)。如果你颠倒
--output
和--detach-sig
,你会得到一个类似于我的问题的错误:gpg --local-user [fingerprint] --sign --armor --detach-sig somefile.tar.xz --output somefile.tar.xz.asc
结论
给定参数的顺序很重要。这就是它失败的原因。