AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1225262
Accepted
Eirik
Eirik
Asked: 2020-04-09 01:04:13 +0800 CST2020-04-09 01:04:13 +0800 CST 2020-04-09 01:04:13 +0800 CST

如何生成以电子方式签署 pdf 的证书?

  • 772

我一直在试图弄清楚我需要创建什么样的证书,以及如何创建它以使用 LibreOffice 签署 PDF。我创建了一个 GnuPG 密钥,但它不起作用。我试图创建一个私钥(通过“密码和密钥”应用程序),但它不会让我这样做。

没有可点击的按钮

我在哪里错了?

我正在尝试制作可用于对 PDF 进行电子签名的证书。

创建文档时会在 libreoffice 中显示的内容。

在此处输入图像描述

提前感谢一堆。

pdf libreoffice signature pgp
  • 3 3 个回答
  • 3527 Views

3 个回答

  • Voted
  1. Best Answer
    Marco
    2020-12-26T03:42:51+08:002020-12-26T03:42:51+08:00

    也许值得提供更多细节,如何使用 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
  2. 24601
    2020-04-09T23:34:11+08:002020-04-09T23:34:11+08:00

    获得证书分为三个基本阶段。

    1. 您可以从证书颁发机构获得证书。无论您选择政府机构还是私人公司,这项服务通常都会被收费,例如当他们证明您的身份时。很少有其他权威机构免费颁发证书,例如开源项目“CAcert”,它基于众所周知且可靠的 Web of Trust 模型,并且越来越受欢迎。

    2. 如果您使用的是 Solaris 或 Linux,则必须安装最新版本的 Thunderbird 或 Firefox 才能安装一些加密所需的系统文件。

    3. 对文档中的宏进行签名。通常,宏是文档的一部分。如果您对文档进行签名,文档内的宏会自动签名。

    参考

    • 0
  3. Rik
    2022-06-16T20:10:28+08:002022-06-16T20:10:28+08:00

    以下是您如何生成自己的证书以在 libreoffice 上(例如 Debian)中签署文档,并设置自己这样做:

    准备

    安装必要的工具:

    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

    1. 打开 LibreOffice
    2. 选择窗口
    3. 选择选项
    4. 选择左侧的安全性
    5. 在右侧,选择Certificate by Certificate Path
    6. 在结果对话框的底部选择Select NSS Path~/.pki/nssdb ,选择正确的路径(即),选择Ok(确保选择了新的 Manual 路径),最后Restart Now。
    7. 重启后,打开一个文档,选择File,选择Export as,选择Export as PDF。
    8. 导航到数字签名选项卡,您应该会看到一切正常: 需要 NSS 数据库密码 生成和导入证书可用于签名 证书详情 1 证书详情 2
    9. 然后选择有问题的证书以使用它进行签名: 选择要签名的证书
    10. 输入您的证书密码
    11. 输入您的位置和原因(如果需要) 添加签名详细信息
    12. 选择导出并保存您的文档 保存已签名的文档

    最后,您可以进入File ⇨ Digital Signatures ...

    验证签名的 PDF 文档 1 验证签名的 PDF 文档 2

    参考:

    • 0

相关问题

  • 如何合并多个PDF文件?

  • 我可以将 PDF 设为“打印到文件”的默认设置吗

  • 是否可以直接在 Chrome 中查看 PDF 而无需先下载它们?

  • 如何强制面板不在顶部?

  • 如何突出显示或注释 PDF?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve