![如何在 Linux 上验证 PDF 上的数字签名?](https://linux22.com/image/1566328/%E5%A6%82%E4%BD%95%E5%9C%A8%20Linux%20%E4%B8%8A%E9%AA%8C%E8%AF%81%20PDF%20%E4%B8%8A%E7%9A%84%E6%95%B0%E5%AD%97%E7%AD%BE%E5%90%8D%EF%BC%9F.png)
我是一名 Linux 桌面用户。
有人给我发送了一份经过数字签名的 PDF 文件。该文件应该是使用某种政府/监管机构/官方机构颁发的证书进行签名的。
作为典型的最终用户,我是否有办法确定签名是否有效?
我知道 Windows Acrobat Reader 在某种程度上是可以工作的,尽管它甚至还不清楚有效性签名的存在,而不是签名本身的存在。似乎来自 XYZ。
答案1
我花了几个小时进行实验并发现:
pdfsig
poppler-utils 包中的命令可以验证 PDF 签名。使用方法很简单:pdfsig signed.pdf
但对我来说,它仅适用于可见签名(Fedora 28 上的 0.62.0 版本)。对于不可见签名,它显示:
文件“signed.pdf”不包含任何签名
掌握 PDF 编辑器是一个 GUI 工具,可以显示和验证签名,如下图所示,只需自由的版本。
LibreOffice Draw 能够使用以下方式显示和验证签名
文件->电子签名->电子签名
但就我而言,它再次仅显示可见的签名。
答案2
在 KDE 中你可以使用 Okular其行为与 Windows 上的 Adobe Acrobat Reader 类似。
或者,你可以在终端 shell 中使用 python 的模块 皮汉科 其命令返回某物如果文档已签名,但返回的某些内容通常是“失败的”,即使 Adobe 和 Okular 对其进行了积极验证。
答案3
Foxit PhantomPDF 应该能够提供验证数字证书的功能 - 需付费使用。Foxit Reader 只能对证书进行数字签名。mutool signsigned.pdf 功能在 ubuntu 版本中不可用。Arch 中可能存在。
答案4
我找到了一个目前可以使用的东西,但它是一个 Flatpak 容器,容器显然不太安全。因此我将继续使用pyhanko
。
如果你有足够新的 Linux(poppler 版本 21.01),那么它可能已经为你工作了。否则,我遵循了建议(https://cloudstore.zih.tu-dresden.de/index.php/s/j5BKKyJYZFBzGsB)最舒适的方式是通过 flatpack(https://flathub.org/apps/details/org.kde.okular)我也尝试过构建一个容器,但没有成功。
如果我通过 Flatpak 安装较新的 Okular,它对我有用:
1.)安装 flatpak
下列的https://flatpak.org/setup/Debian:
# apt install flatpak
# flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
2.)安装 Okular
更多信息和来源:https://flathub.org/apps/details/org.kde.okular
# flatpak install flathub org.kde.okular
# flatpak run org.kde.okular
3.) 设置证书数据库(使用个人证书)
资料来源:https://docs.kde.org/stable5/en/okular/okular/signatures.html#adding_digital_signatures,https://docs.kde.org/stable5/en/okular/okular/configure-backends.html,https://docs.kde.org/stable5/en/okular/okular/config-pdf.html#config-pdf-digital-signatures):
(( 此步骤以防签名仍然不起作用。 ))
在 Okular 中:设置 -> 配置后端 -> 单选勾选“自定义:”,并选择带有数字证书的 Firefox 数据数据库所在的位置(在我的情况下是 /home/username/.mozilla/firefox/gwn47hz7.default-esr)。
4.)签名
工具->数字签名...->(换句话说,要求我输入 Firefox 的“主密码”)->画一个正方形进行签名->选择数字证书->签名文件的名称。