我正在尝试使用基于证书的身份验证(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>
答案 0 :(得分:0)
您必须将上下文的目的设置为CLIENT_AUTH
(默认= SERVER_AUTH
)。
sslcontext = ssl.create_default_context(purpose=ssl.Purpose.CLIENT_AUTH)