如何在 Linux 上验证 PDF 上的数字签名?

如何在 Linux 上验证 PDF 上的数字签名?

我是一名 Linux 桌面用户。

有人给我发送了一份经过数字签名的 PDF 文件。该文件应该是使用某种政府/监管机构/官方机构颁发的证书进行签名的。

作为典型的最终用户,我是否有办法确定签名是否有效?

我知道 Windows Acrobat Reader 在某种程度上是可以工作的,尽管它甚至还不清楚有效性签名的存在,而不是签名本身的存在。似乎来自 XYZ。

答案1

我花了几个小时进行实验并发现:

  1. pdfsigpoppler-utils 包中的命令可以验证 PDF 签名。使用方法很简单:

    pdfsig signed.pdf
    

    但对我来说,它仅适用于可见签名(Fedora 28 上的 0.62.0 版本)。对于不可见签名,它显示:

    文件“signed.pdf”不包含任何签名

  2. 掌握 PDF 编辑器是一个 GUI 工具,可以显示和验证签名,如下图所示,只需自由的版本。 大师级 PDF 编辑器 - 签名

  3. LibreOffice Draw 能够使用以下方式显示和验证签名

    文件->电子签名->电子签名

    但就我而言,它再次仅显示可见的签名。

答案2

在 KDE 中你可以使用 Okular其行为与 Windows 上的 Adob​​e Acrobat Reader 类似。

或者,你可以在终端 shell 中使用 python 的模块 皮汉科 其命令返回某物如果文档已签名,但返回的某些内容通常是“失败的”,即使 Adob​​e 和 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_signatureshttps://docs.kde.org/stable5/en/okular/okular/configure-backends.htmlhttps://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 的“主密码”)->画一个正方形进行签名->选择数字证书->签名文件的名称。

相关内容