簡體   English   中英

用Python讀取X509證書

[英]Reading an X509 Certificate in 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等於:

"{\"RawData\":\"MIICiTCCAfKgAwI...OhpEV23wsm06G2s5OJk=\"}"

據我所知, RawDataRawData中的一個屬性,它等於字節數組。

python中是否有任何明顯的模塊可以達到相同的結果? 我一直在看這個答案,但是我無法確定它是否反映了我想要實現的目標。

理想的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)

關於如何處理此問題的任何想法都很棒!

如果我理解您的問題,則需要加載PKCS#12證書,然后將公鑰(證書)上載到服務器。 這可以通過pyopenssl的crypto模塊來完成。

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM