我可以使用pkcs11-tool创建pkcs#7签名吗?

cprn

我在Ubuntu 17.10上尝试使用智能卡签名字符串。我需要的是一个pkcs7-signedData对象。我可以使用下面的命令进行一些签名,然后获得一些二进制foo.sig文件。它是什么?如何使其成为PKCS#7签名?

$ echo foobar | pkcs11-tool --module ./VdsPKCS1164.so --login --pin $PIN \
   --sign --id 5378 --output-file foo.sig
Using slot 0 with a present token (0x1)
Using signature algorithm RSA-PKCS

$ openssl asn1parse -in foo.sig
Error: offset too large

$ openssl asn1parse -inform der -in foo.sig
Error in encoding
139905918145984:error:0D07207B:asn1 encoding routines:ASN1_get_object:header too long:../crypto/asn1/asn1_lib.c:101:
cprn

经过广泛研究:

pkcs11-tool --sign该命令生成的选定哈希算法的二进制结果本身不是PKCS结构,但可以与第三方库一起使用以生成asn1兼容的东西这是一个繁琐且不推荐的过程,但是可以构建可验证的pkcs7-signedData签名。

openssl smime -sign建议使用命令;它需要配置为pkcs11与具有相同模块引擎一起使用pkcs11-tool并且可以在没有其他库的情况下构建PKCS#7结构。

OpenSSL配置文件示例:

openssl_conf = openssl_def

[openssl_def]
engines = engine_section

[engine_section]
pkcs11 = pkcs11_section

[pkcs11_section]
dynamic_path = /usr/lib/x86_64-linux-gnu/openssl-1.0.0/engines/pkcs11.so
engine_id = pkcs11
MODULE_PATH = ./VdsPKCS1164.so
PIN = 1234
default_algorithms = ALL
init = 1

生成PKCS#7签名示例的命令:

$ echo foobar > input.data
$ OPENSSL_CONF=./openssl.cnf openssl smime -sign -engine pkcs11 \
    -md sha1 -binary -in input.data -out foo.sig -outform der \
    -keyform engine -inkey id_5378 -certfile extra.cert.pem -signer cert.pem

cert.pem可以从令牌卡中提取文件(以及任何其他证书,如果需要),并使用以下命令将其转换为PEM:

$ pkcs11-tool --module ./VdsPKCS1164.so --login --pin $PIN \
    --read-object --type cert -id 5378 --output-file cert.crt
$ openssl x509 -inform der -in cert.crt -out cert.pem

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PKCS#7签名验证

来自分类Dev

使用.der-Certificate对文件签名并创建签名(pkcs#7)

来自分类Dev

签名验证(格式为PKCS#7)

来自分类Dev

使用PHP为Apple Wallet通行证创建PKCS#7分离签名

来自分类Dev

使用.pfx证书封装,签名和创建PKCS#7 DER消息

来自分类Dev

使用 PKCS#11 的 PHP 中的 PKCS#7 签名,无需 CLI 调用

来自分类Dev

JAVA-如何使用原始PDF和单独的PKCS#7签名数据创建签名PDF

来自分类Dev

合并验证PKCS#7签名所需的所有任务

来自分类Dev

如何查看pkcs#7内部签名了哪些属性?

来自分类Dev

Ubuntu 18.04 - 升级后 - 显示/PKCS#7 签名错误

来自分类Dev

使用openssl的PKCS11密钥包装

来自分类Dev

使用openssl的PKCS11密钥包装

来自分类Dev

配置WPA请求者以使用tpm2 pkcs11工具

来自分类Dev

使用Adobe PKCS#7证书在折纸上签名的PDF验证

来自分类Dev

PKCS11命令流

来自分类Dev

PKCS11,对象针

来自分类Dev

使用Java keytool的PKCS11格式密钥

来自分类Dev

如何在 Firefox 中使用 pkcs11 模块

来自分类Dev

C#将时间戳添加到PKCS#7 CMS数字签名

来自分类Dev

如何从签名的 PE PKCS#7 块中获取算法字段

来自分类Dev

在JAVA中使用pkcs11包装器对XML进行签名

来自分类Dev

使用adbe.pkcs7.detached创建签名的PDF

来自分类Dev

PKCS11 Python FindObjects in available slots

来自分类Dev

在哪里可以找到Cherry SmartTerminal ST-1144的PKCS11非托管库

来自分类Dev

x509Certificate-以pkcs#7格式(.net c#)保存二进制签名

来自分类Dev

使用pkcs11模块使用公共密钥加密数据失败

来自分类Dev

如何安全地存储对称密钥?我可以使用 pkcs12 来存储对称密钥吗?

来自分类Dev

使用 pkcs11 USB 令牌解密 pdf 时出现 Itextpdf 错误

来自分类Dev

使用DER中PKCS#7格式的数字证书对Xml进行签名(ITU-T X.690建议书)

Related 相关文章

  1. 1

    PKCS#7签名验证

  2. 2

    使用.der-Certificate对文件签名并创建签名(pkcs#7)

  3. 3

    签名验证(格式为PKCS#7)

  4. 4

    使用PHP为Apple Wallet通行证创建PKCS#7分离签名

  5. 5

    使用.pfx证书封装,签名和创建PKCS#7 DER消息

  6. 6

    使用 PKCS#11 的 PHP 中的 PKCS#7 签名,无需 CLI 调用

  7. 7

    JAVA-如何使用原始PDF和单独的PKCS#7签名数据创建签名PDF

  8. 8

    合并验证PKCS#7签名所需的所有任务

  9. 9

    如何查看pkcs#7内部签名了哪些属性?

  10. 10

    Ubuntu 18.04 - 升级后 - 显示/PKCS#7 签名错误

  11. 11

    使用openssl的PKCS11密钥包装

  12. 12

    使用openssl的PKCS11密钥包装

  13. 13

    配置WPA请求者以使用tpm2 pkcs11工具

  14. 14

    使用Adobe PKCS#7证书在折纸上签名的PDF验证

  15. 15

    PKCS11命令流

  16. 16

    PKCS11,对象针

  17. 17

    使用Java keytool的PKCS11格式密钥

  18. 18

    如何在 Firefox 中使用 pkcs11 模块

  19. 19

    C#将时间戳添加到PKCS#7 CMS数字签名

  20. 20

    如何从签名的 PE PKCS#7 块中获取算法字段

  21. 21

    在JAVA中使用pkcs11包装器对XML进行签名

  22. 22

    使用adbe.pkcs7.detached创建签名的PDF

  23. 23

    PKCS11 Python FindObjects in available slots

  24. 24

    在哪里可以找到Cherry SmartTerminal ST-1144的PKCS11非托管库

  25. 25

    x509Certificate-以pkcs#7格式(.net c#)保存二进制签名

  26. 26

    使用pkcs11模块使用公共密钥加密数据失败

  27. 27

    如何安全地存储对称密钥?我可以使用 pkcs12 来存储对称密钥吗?

  28. 28

    使用 pkcs11 USB 令牌解密 pdf 时出现 Itextpdf 错误

  29. 29

    使用DER中PKCS#7格式的数字证书对Xml进行签名(ITU-T X.690建议书)

热门标签

归档