Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Python中读取X509证书_C#_Python_Serialization_X509certificate - Fatal编程技术网

C# 在Python中读取X509证书

C# 在Python中读取X509证书,c#,python,serialization,x509certificate,C#,Python,Serialization,X509certificate,我在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.JsonC

我在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=\"}"
据我所知,
RawData
是x509Cert中的一个属性,它等于一个字节数组

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证书,然后将公钥(证书)上载到服务器。这可以通过以下方式完成

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)