Python 3.x p12证书验证python
我正在尝试使用提供者提供的p12证书进行身份验证,并希望使用它来获取站点的html正文 我目前拥有以下代码:Python 3.x p12证书验证python,python-3.x,openssl,Python 3.x,Openssl,我正在尝试使用提供者提供的p12证书进行身份验证,并希望使用它来获取站点的html正文 我目前拥有以下代码: import contextlib import OpenSSL.crypto import os import requests import ssl import tempfile import http.client import shutil from OpenSSL import crypto url = "https://website.com/" p12_cert =
import contextlib
import OpenSSL.crypto
import os
import requests
import ssl
import tempfile
import http.client
import shutil
from OpenSSL import crypto
url = "https://website.com/"
p12_cert = "cert.p12"
password = "password"
@contextlib.contextmanager
def pfx_to_pem(pfx_path, pfx_password):
''' Decrypts the .pfx file to be used with requests. '''
with tempfile.NamedTemporaryFile(suffix='.pem') as t_pem:
f_pem = open(t_pem.name, 'wb')
pfx = open(pfx_path, 'rb').read()
p12 = OpenSSL.crypto.load_pkcs12(pfx, pfx_password)
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()))
f_pem.close()
yield t_pem.name
with pfx_to_pem(p12_cert, password) as cert:
requests.get(url, verify=cert)
任何指导都是非常可取的
谢谢您可以将p12文件拆分为其证书/密钥部分,并将其作为元组使用,以替代单个.pem文件路径 完成后不要忘记删除密钥和crt文件,以防您不想永久存储未加密的p12文件,而只想在运行时对其解密
certpw = 'myTopSecretPassword'
# create pem file from p12
p12 = crypto.load_pkcs12(open("/file.p12", 'rb').read(), certpw.encode())
# PEM formatted private key
k = crypto.dump_privatekey(crypto.FILETYPE_PEM, p12.get_privatekey())
fkey = open('/myKey.key', 'wb')
fkey.write(k)
fkey.close()
# PEM formatted certificate
c = crypto.dump_certificate(crypto.FILETYPE_PEM, p12.get_certificate())
fcert = open('/myCert.crt', 'wb')
fcert.write(c)
fcert.close()
clientcert = ('/myCert.crt', '/myKey.key')
# if you work with a .pem file, you simply use 'cert='/myPEMFile.pem' after dumping the key/cert data in the .pem file
requests.get('https://someurl.org', cert=('/myCert.crt', '/myKey.key'))
verify=
用于验证服务器证书的CA证书。对于客户端证书+密钥,请使用cert=
@Pon:我也无法使用此代码进行身份验证。你能分享一下你的代码吗?在使用rest cliend时,我能够进行身份验证和发布,但使用python请求。发布我的证书Varificantin失败。顺便说一句,我也有一个带有密码的p12证书,我正在使用您的上述代码。同样,使用上述代码,我得到以下错误:>>使用pfx\u to\u pem('C:\\Users\\ukhare\\Desktop\\gos\\trial\u tata.p12','trialtata')作为证书:…请求。获取('https://IP:8080/siteapi/availabletests“,verify=cert)…回溯(最后一次调用):文件“”,第1行,在文件“D:\m\Python34\lib\contextlib.py”的第59行,在uuu输入uu返回下一个(self.gen)文件“”,第6行,在pfx_to_pem PermissionError:[Errno 13]权限被拒绝:“C:\\Users\\ukhare\\AppData\\Local\\Temp\\tmpbx5ru9gv.pem”
嘿,你能分享你的代码片段吗?谢谢!