使用客户端证书的扭曲的HTTP客户端

巨人

我正在尝试编写一个扭曲的https客户端,该客户端使用客户端证书进行身份验证。这是来自扭曲文档的示例,用于发出简单的https请求:

from __future__ import print_function

from twisted.internet import reactor
from twisted.web.client import Agent
from twisted.web.http_headers import Headers

agent = Agent(reactor)

d = agent.request(
    b'GET',
    b'https://127.0.0.1:8880/test',
    Headers({'User-Agent': ['Twisted Web Client Example']}),
    None)

def cbResponse(ignored):
    print('Response received')
d.addCallback(cbResponse)

def cbShutdown(ignored):
    reactor.stop()
d.addBoth(cbShutdown)

reactor.run()

我发现这个关于如何使用客户端SSL证书的解释。不过,我不知道如何告诉代理使用证书进行身份验证。有任何想法吗?

让·保罗·卡尔德龙

Agent使用IPolicyForHTTPS可以构造一个,可以创建一个contextFactory向TLS连接提供客户端证书。

certData = getModule(__name__).filePath.sibling('public.pem').getContent()
authData = getModule(__name__).filePath.sibling('server.pem').getContent()
clientCertificate = ssl.PrivateCertificate.loadPEM(authData)
authority = ssl.Certificate.loadPEM(certData)
options = ssl.optionsForClientTLS(u'example.com', authority,
                                  clientCertificate)

class SinglePolicy(object):
    def creatorForNetloc(self, hostname, port):
        return options

agent = Agent(reactor, SinglePolicy())

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章