aiohttp和基于证书的身份验证(cba)

时间:2017-01-11 14:32:47

标签: python ssl aiohttp

我正在尝试使用基于证书的身份验证(cba)与证书文件和密钥文件在服务器上进行身份验证。我怎样才能用aiohttp实现这个目标?使用用户名和密码进行HTTP身份验证工作正常,但我找不到任何cba示例。

我尝试从aiohttp文档http://aiohttp.readthedocs.io/en/stable/client.html#ssl-control-for-tcp-sockets

扩展示例
async def main_ssl(loop):
    sslcontext = ssl.create_default_context()
    sslcontext.load_cert_chain(certfile=cert_file, keyfile=client_key)
    conn = aiohttp.TCPConnector(ssl_context=sslcontext)
    async with aiohttp.ClientSession(connector=conn) as session:
        await post_ssl(session)

但是这给了我以下错误:

aiohttp.errors.ClientOSError: [Errno 1] Cannot connect to host    
10.202.200.10:443 ssl:True [Can not connect to 10.202.200.10:443 [[SSL: 
CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:645)]]
Unclosed client session
client_session: <aiohttp.client.ClientSession object at 0x7f1dce7f5940>

1 个答案:

答案 0 :(得分:0)

您必须将上下文的目的设置为CLIENT_AUTH(默认= SERVER_AUTH)。

sslcontext = ssl.create_default_context(purpose=ssl.Purpose.CLIENT_AUTH)