發(fā)送帶證書的request請求

python3 的requests請求支持?jǐn)y帶的證書種類是pem,如果擁有的證書不是pem,需要先轉(zhuǎn)為pem

# 以下代碼實現(xiàn)了p12證書轉(zhuǎn)pem證書,發(fā)送帶證書的request請求。
import requests, OpenSSL
 
def p12_to_pem(certname, pwd):
    pem_name = certname + ".pem"
    f_pem = open(pem_name, 'wb')
    p12file = certname + ".p12"
    p12 = OpenSSL.crypto.load_pkcs12(open(p12file, 'rb').read(), pwd)
    f_pem.write(OpenSSL.crypto.dump_privatekey(OpenSSL.crypto.FILETYPE_PEM, p12.get_privatekey()))
    f_pem.write(OpenSSL.crypto.dump_certificate(OpenSSL.crypto.FILETYPE_PEM, p12.get_certificate()))
    ca = p12.get_ca_certificates()
    if ca is not None:
        for cert in ca:
            f_pem.write(OpenSSL.crypto.dump_certificate(OpenSSL.crypto.FILETYPE_PEM, cert))
    f_pem.close()
    return pem_name
 
def post_cert_request(url,data,header,certname,pwd):
    if(certname!=""):
        cert = p12_to_pem(certname,pwd)
    else:
        cert = None
    r = requests.post(url, data=data, headers=header, cert=cert)
    print(r.content)
 
if __name__=="__main__":
    post_cert_request("url","data","header","certname","pwd")
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容