答案1
也许值得给出更多细节,如何使用 Libreoffice 签署 PDF。有一些陷阱,这是保存我的经验的好地方。
首先获取一个可用于签名/加密电子邮件的 x509 证书。获取证书的地点会不断变化。免费的证书很少见,最坏的情况下,请创建一个自签名证书。网络上有很多关于如何执行此操作的说明。最后,您需要一个包含 pk12 格式的私钥的签名证书。
目前,我们假设 pk12 文件名为:cert.pk12
$ mkdir -p "~/.pki/cert8"
$ certutil -N -d ~/.pki/cert8/
Enter a password which will be used to encrypt your keys.
The password should be at least 8 characters long,
and should contain at least one non-alphabetic character.
Enter new password:
Re-enter password:
$ pk12util -d ~/.pki/cert8/ -i cert.pk12
Enter Password or Pin for "NSS Certificate DB":
Enter password for PKCS12 file:
pk12util: PKCS12 IMPORT SUCCESSFUL
$ ls ~/.pki/cert8/
cert8.db key3.db secmod.db
$ certutil -L -d ~/.pki/cert8/
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
[email protected] u,u,u
Xxxxxxxxxxxxxxxxxxxxxxxxxxxx CA ,,
XXxxxx xxxxxxxxxxxxxxxxxxx CA ,,
现在证书已保存在数据库中。在 Libreoffice 的选项中(工具 -> 选项... -> 安全 -> 证书... -> 选择 NSS 路径...)需要配置数据库的路径。
现在应该可以在“数字签名”对话框中选择该证书。
至少所有工具都向我显示 PDF 已签名。其中大多数都向我显示签名有效。但 Windows Acrobat Reader 仍然不相信。在 Acrobat 中,您需要明确手动信任证书。但我从 Linux 获得的 PDF 被标记为“已修改”。也许传输将 Linux 行尾更改为 Windows 行尾?
似乎只有通过“导出为 PDF”才可使用“时间戳授权机构”(TSA)。
添加:使用seahorse
(通过单击“启动证书管理器”从 Libreoffice 启动)无法添加 x509 证书(至少在撰写本文时不能)。
答案2
下面介绍了如何在(例如 Debian)上的 libreoffice 中生成自己的用于签署文档的证书,并进行相应的设置:
准备
安装必要的工具:
sudo apt-get update && sudo apt-get install openssl libnss3-tools
制作证书
第一的,生成 x509 证书:
openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes \
-keyout signing.key -out signing.crt -subj "/CN=John T Doe" \
-addext "subjectAltName=email:[email protected]"
...
..+......+..+....+........+.+.........+...........+.+.....+.+.....+...+.+....
+.....+.+.....+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++*.........+..+.........+....+.........+...............+......+......
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-----
...
注意subjectAltName
可以包含email:
反而DNS 条目数
下一个,将证书转换为 p12 格式的密钥:
openssl pkcs12 -export -in signing.cert -inkey signing.key \
-out signing-certificate.p12 -name "John T Doe"
...
Enter Export Password:
Verifying - Enter Export Password:
...
制作 NSS 数据库
接下来,我们需要为 NSS 准备数据库路径并生成数据库:
mkdir -p ~/.pki/nssdb
certutil -d ~/.pki/nssdb -N
...
Enter Password or Pin for "NSS Certificate DB":
Enter a password which will be used to encrypt your keys.
The password should be at least 8 characters long,
and should contain at least one non-alphabetic character.
Enter new password:
Re-enter password:
Password changed successfully.
...
请注意,该密码是您的默认主 Firefox 密码(在 Debian/Ubuntu 上)。因此,如果您尚未设置,它将是一个空字符串 - 一旦你设置了,它将提示你输入一个新的并更改它
或者,不添加密码即可(参考文献 4):
certutil -d ~/.pki/nssdb -N --empty-password
最后,将 p12 证书导入数据库:
pk12util -d ~/.pki/nssdb -i signing-certificate.p12
...
Enter Password or Pin for "NSS Certificate DB":
Enter password for PKCS12 file:
pk12util: PKCS12 IMPORT SUCCESSFUL
...
请注意,如果你想要更高级一点,可以使用 -k ${database.password.file} -w ${certificate.password.file} 以编程方式标记密码
配置 LibreOffice
- 打开 LibreOffice
- 选择窗户
- 选择选项
- 选择安全在左侧
- 在右侧,选择证书经过证书路径
- 选择选择 NSS 路径在出现的对话框底部,选择正确的路径(即
~/.pki/nssdb
),选择好的(确保选择了新的手册路径),最后现在重启。 - 重启后,打开一个文档,选择文件, 选择导出为, 选择导出为 PDF。
- 导航到“数字签名”选项卡,您应该看到一切正常:
- 然后选择相关证书以使用它进行签名:
- 输入您的证书密码
- 输入您的位置和原因(如果需要)
- 选择出口并保存您的文档
最后你可以进入文件⇨数字签名...⇨签署现有 PDF,然后打开您签名的 PDF 来验证签名是否存在(您也可以通过这种方式签名):
参考:
答案3
获得证书有三个基本阶段。
您可以从认证机构获得证书。无论您选择政府机构还是私人公司,通常都需要为这项服务付费,例如当他们认证您的身份时。很少有其他机构免费颁发证书,例如开源项目“CAcert”,它基于著名且可靠的信任网络模型,并且越来越受欢迎。
如果您使用的是 Solaris 或 Linux,则必须安装最新版本的 Thunderbird 或 Firefox 来安装加密所需的一些系统文件。
签署文档中的宏。通常,宏是文档的一部分。如果您签署文档,文档中的宏将自动签署。