首页 > 解决方案 > 使用 pyOpenSSL 创建 asn1parse 、 crl 和获取 pem

问题描述

我目前正在使用openSSL命令来解析签名文件,最后提取.clrs并转换为.pem

将签名文件解析为 asn1parse_content.txt
openssl asn1parse -inform DER -in signed.p7s >> asn1parse_content.txt

使用从 asn1parse_content.txt 获得的偏移量和长度从 signed.p7s 中提取 crl 内容
dd if=signed.p7s of=crl1.crl bs=1 count=5000 skip=4000

从 crl 转换为 pem
openssl crl -inform DER -in crl1.crl -outform PEM -out crl1_pem.pem

我需要在windowspyOpenSSL中使用 python模块做同样的事情,检查了相关帖子,但没有一个符合我的要求,大多数帖子都与 RSA 密钥、私钥/公钥和直接提取from等有关。.pem.p7s

我对这个非常陌生,python并且OpenSSL想出了一个小程序来解决这个问题

下面是从 p7s 文件中获取 asn1parse 数据的程序。

import sys
from OpenSSL import crypto
from OpenSSL._util import (
    ffi as _ffi,
    lib as _lib,
)
p7s_file = sys.argv[1]
with open(p7s_file, 'rb') as f:
    p7data = f.read()
p7 = crypto.load_pkcs7_data(crypto.FILETYPE_ASN1, p7data)
print p7

实际输出

C:\Python27\lib\site-packages\OpenSSL\crypto.py:14: CryptographyDeprecationWarning: Python 核心团队不再支持 Python 2。对它的支持现在在密码学中已弃用,并将在未来的版本中删除。
从密码学导入工具,x509
<OpenSSL.crypto.PKCS7 object at 0x000000000359DE48>

但是期待下面的一系列行

0:d=0 hl=2 l=inf cons: 序列
2:d=1 hl=2 l= 9 prim: OBJECT :pkcs7-signedData 13:d=1 hl=2 l=inf cons: cont [ 0 ]
15 :d=2 hl=2 l=inf cons: SEQUENCE
17:d=3 hl=2 l= 1 prim: INTEGER :01 20:d=3 hl=2 l= 15 cons: SET
22:d=4 hl= 2 l= 13 cons: SEQUENCE
24:d=5 hl=2 l= 9 prim: OBJECT :sha256 35:d=5 hl=2 l= 0 prim: NULL
37:d=3 hl=2 l=inf cons: SEQUENCE
39:d=4 hl=2 l= 9 prim: OBJECT :pkcs7-data 50:d=4 hl=2 l= 0 prim: EOC
和许多其他行

我正在使用偏移量(即第一个值hll )使用命令提取crl内容dd

对于这方面的参考和示例,我将不胜感激。

以下是我已经检查过的帖子
1
2
3

和许多其他人

更新 1:

在上面的代码中,我添加了以下几行

pkcs7_PEM = crypto.load_pkcs7_data(crypto.FILETYPE_PEM, p7data)
pkcs7_crl = pkcs7_PEM.get_crls()
print pkcs7_crl

然后我得到了这个错误

C:\Python27\lib\site-packages\OpenSSL\crypto.py:14: CryptographyDeprecationWarning: Python 核心团队不再支持 Python 2。对它的支持现在在密码学中已弃用,并将在未来的版本中删除。from cryptography import utils, x509
<OpenSSL.crypto.PKCS7 object at 0x000000000360EE80>
Traceback(最近一次调用最后):
文件“asn1_check.py”,第 51 行,在
pkcs7_PEM = crypto.load_pkcs7_data(crypto.FILETYPE_PEM,p7data)
文件“C :\Python27\lib\site-packages\OpenSSL\crypto.py",第 3131 行,在 load_pkcs7_data _raise_current_error()
文件中 "C:\Python27\lib\site-packages\OpenSSL_util.py",第 57 行,在 exception_from_error_queue 中引发 exception_type (错误)
OpenSSL.crypto.Error:[('PEM 例程','

标签: opensslcryptographyx509pempyopenssl

解决方案


推荐阅读