openssl - 使用 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
和许多其他行
我正在使用偏移量(即第一个值hl和l )使用命令提取crl
内容dd
对于这方面的参考和示例,我将不胜感激。
和许多其他人
更新 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 例程','
解决方案
推荐阅读
- python - 在 Python 中将递归函数结果保存为数组
- c++ - 函数的隐藏/锚定参数?
- python - 如何使用 Python 为给定总和生成加数?
- sql - 有一个包含一些重复行的表,希望为每个 ID 按顺序编号
- google-chrome-extension - 如何自动将文件上传到网站
- javascript - useState 不使用带有 React Hooks 的 async/await 渲染 axios 调用的结果
- javascript - 试图让串口与电子一起工作。在电子重建上出现很长的错误
- spring - 为什么spring data和spring cloud sql每隔几秒就会创建新的连接?
- sql - 仅匹配包含单词列表的列中的单词
- javascript - 如何在 ReactJS 中使用 onClick 处理事件