读取Python中的X509证书

2024-05-13 04:07:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下C代码,它可以完成我需要的工作:

//Try create an X509 cert object
X509Certificate x509Cert = new X509Certificate("C:/Users/mryan/Documents/Code/SampleApps/bundle.p12", "passphrase");

//Serialize Cert and POST to server
string devString = Newtonsoft.Json.JsonConvert.SerializeObject(x509Cert);

result = wc.UploadString(apiRoot + "/Accounts/" + accId + "/certs", "POST", devString)

所以这里,devString等于:

^{pr2}$

据我所知,RawData是x509Cert中的一个属性,它等于一个字节数组。在

python中有没有明显的模块可以达到相同的结果?我在看this答案,但我不知道它是否反映了我想要实现的目标。在

理想的Python伪代码:

#Create X509 Cert object
x509cert = module.readX509Certificate("C:/Users/mryan/Documents/Code/SampleApps/bundle.p12", "passphrase")
cert_data = {"RawData": x509Cert}
result = requests.post(apiRoot + "/Accounts/" + accId + "/certs", data=cert_data)
关于如何处理这个问题太好了!在


Tags: 代码datacertobjectcodeusersdocumentsbundle
1条回答
网友
1楼 · 发布于 2024-05-13 04:07:58

如果我理解您的问题,您需要加载一个PKCS#12证书,然后将公钥(证书)上载到服务器。这可以用pyopenssl's crypto module完成。在

import json
import requests
from OpenSSL import crypto

P12_CERT_FILE = 'C:/Users/mryan/Documents/Code/SampleApps/bundle.p12'
p12_cert = crypto.load_pkcs12(open(P12_CERT_FILE).read(), 'passphrase')
pem_cert = crypto.dump_certificate(crypto.FILETYPE_PEM, p12_cert.get_certificate())

# remove PEM header, footer, and new lines to produce raw cert data
raw_data = ''.join(pem_cert.split('\n')[1:-2])
cert_data = json.dumps({'RawData': raw_data})
result = requests.post(apiRoot + "/Accounts/" + accId + "/certs", data=cert_data)

相关问题 更多 >