我遇到了一个问题,无法从https服务器获取html页面。访问该资源需要进行客户端证书验证(在浏览器中,我必须选择正确的证书才能访问页面)。
我尝试使用Python的http.client
库,代码如下:
import http.client
conn = http.client.HTTPSConnection('example.com', 443, key_file = 'tmp/private.pem', cert_file = 'tmp/public.pem')
conn.set_debuglevel(0)
conn.request('GET', '/index.htm')
result = conn.getresponse()
if result.status != http.client.ACCEPTED:
pass
print(result.status, result.reason)
conn.close()
作为该程序的输出,我得到了:
403 Forbidden
。我做错了什么?请注意,我可以直接通过浏览器访问此资源。私钥和公钥是从用openssl命令从导出的pkcs12文件中提取的(
openssl pkcs12 -nocerts -nodes -in cert.p12 -out private.pem
和 openssl pkcs12 -nokeys -in cert.p12 -out public.pem
)。