当前位置: 首页 > 知识库问答 >
问题:

使用.der-certificate签名文件并创建签名(PKCS#7)

周洋
2023-03-14

我想做的是:

  • 使用证书使用openssl对zip文件进行签名,并创建签名文件(PKCS#7)
  1. 我安装了openssl并打开了控制台
  2. 我创建了一个rsa密钥(openssl genrsa-out key.pem 2048)
  3. 我创建了一个请求(openssl req-batch-sha256-new-key key.pem-out request.pem-subj'/c=../st=../l=../o=../ou=../cn=..')
  4. 我将此请求发送给了对此请求施了任何魔法的人,并向我发送了一个名为'Certificate.der'的文件。当我打开这个文件时,有一些信息,如oscp-url和类似的东西。

到目前为止还不错。接下来,我的简单方法是使用这个证书对zip文件进行签名,并告诉openssl创建PKCS#7-签名,这样我就可以使用OCSP响应器来验证它。但是我真的不知道这种方法是否正确,以及如何对zip文件进行签名。:-(如果我在推理中有错误,也请告诉我。:-)

有人能帮帮我吗?

共有1个答案

申屠项明
2023-03-14

您可以使用openssl来完成此操作。使用命令

openssl.exe smime -sign -binary -in file.zip -signer certificate.der -inkey key.pem -outform DER -out file.p7b

您可以使用openssl通过以下命令验证签名

openssl.exe smime -verify -binary -inform DER -in file.p7b -content file.zip -noverify > nul
 类似资料:
  • 我试图用Java创建一个ECDSA签名。当我在python中创建一个时,它可以在Java中得到很好的验证。但是反之亦然,我得到了一个BadSignatureException,Python使用ECDSA库,Java使用SpongyCastle。 签名的Python实现:

  • 我已经在Java中生成了一个ECDSA签名,我希望从中获得R和S值,以便获得COSE编码的签名。根据我的理解,我生成的签名是DER编码的(默认情况下使用bouncyCastle)。当我使用P-256曲线(SHA256withECDSA)时,我正确地检索了R和S值。 当我使用其他曲线(P-521、P-384)时,从一种编码到另一种编码的签名解析有一些问题。

  • 我试图实现PDFS的签名验证。这是一个很大的主题,所以我一步一步地进行,首先,我试图在我自己签名的PDF中实际返回一个正值,使用当前Acrobat的所有默认值--对于摘要,应该是SHA256和PKCS7分离签名。因此,我破解了openssl,通过读取PDF中给出的字节范围并调用函数,我得到了一个哈希值来进行比较。因此,现在我需要读取证书数据等,并使用函数。这个看起来就是我想要的: 如文档中所示。除

  • 我用Java生成了一个ECDSA签名,我想从中获得R和S值。我的理解是我生成的签名是DER编码的。有人能给我提供一些Java代码(也许用Bouncy Castle)来检索作为大整数的R和S值吗? 注意:如果有帮助,我通过JCE的Signature类使用内置提供程序生成签名,并且我的P_256EC密钥对的签名长度通常徘徊在70到72字节之间。

  • 我在这里读到了关于saveIncremental是如何工作的,我的最终结果需要类似于这里,我已经成功地基于签名字段本身创建了具有多重可视化的可见签名(与响应中的情况不同,但响应对我帮助很大)。为了详细说明标题,我目前的基本任务是在已经签名的文档上创建一个空签名字段,而不中断现有签名。但是,这里的示例不适用于saveIncremental。我在主函数的末尾添加了以下片段(改编),但没有结果: 生成的

  • 我试图使用以下工作流程创建PAdES签名: PDF准备签名,哈希在浏览器中计算 哈希发送到后端 后端形成分离的CAdES签名 分离的CAdES被发送回组装PAdES签名的浏览器 我们有一个PDF签名的工作示例,其工作原理如下: 准备好PDF,并在浏览器中计算哈希值 这很好用。 然而,现在我们在后端使用DSS库,而不是BouncyCastle,因为我们正在尝试创建PAdES签名。因此,DSS lib