Python中的客户端/服务器TLS

时间:2017-03-20 22:55:31

标签: python ssl

我需要在Python中使用TLS 1.2创建客户端/服务器示例。我花了很多时间,没有得到任何东西......

我尝试这个例子:https://github.com/titeuf87/python3-tls-example

执行client.py时出现此错误:

Exception in callback None
handle: <Handle cancelled>
Traceback (most recent call last):
  File "C:\Users\PC\AppData\Local\Programs\Python\Python35\lib\asyncio\events.py", line 125, in _run
    self._callback(*self._args)
  File "C:\Users\PC\AppData\Local\Programs\Python\Python35\lib\asyncio\selector_events.py", line 667, in _read_ready
    self._protocol.data_received(data)
  File "C:\Users\PC\AppData\Local\Programs\Python\Python35\lib\asyncio\sslproto.py", line 486, in data_received
    ssldata, appdata = self._sslpipe.feed_ssldata(data)
  File "C:\Users\PC\AppData\Local\Programs\Python\Python35\lib\asyncio\sslproto.py", line 200, in feed_ssldata
    self._sslobj.do_handshake()
  File "C:\Users\PC\AppData\Local\Programs\Python\Python35\lib\ssl.py", line 633, in do_handshake
    match_hostname(self.getpeercert(), self.server_hostname)
  File "C:\Users\PC\AppData\Local\Programs\Python\Python35\lib\ssl.py", line 300, in match_hostname
    % (hostname, dnsnames[0]))
ssl.CertificateError: hostname '127.0.0.1' doesn't match 'server'
Traceback (most recent call last):
  File "C:\Users\PC\workspace\testingpython\client.py", line 18, in <module>
    loop.run_until_complete(connect())
  File "C:\Users\PC\AppData\Local\Programs\Python\Python35\lib\asyncio\base_events.py", line 342, in run_until_complete
    return future.result()
  File "C:\Users\PC\AppData\Local\Programs\Python\Python35\lib\asyncio\futures.py", line 274, in result
    raise self._exception
  File "C:\Users\PC\AppData\Local\Programs\Python\Python35\lib\asyncio\tasks.py", line 237, in _step
    result = coro.throw(exc)
  File "C:\Users\PC\workspace\testingpython\client.py", line 11, in connect
    reader, writer = yield from asyncio.open_connection("127.0.0.1", 1234, ssl=sslcontext)
  File "C:\Users\PC\AppData\Local\Programs\Python\Python35\lib\asyncio\streams.py", line 64, in open_connection
    lambda: protocol, host, port, **kwds)
  File "C:\Users\PC\AppData\Local\Programs\Python\Python35\lib\asyncio\base_events.py", line 669, in create_connection
    sock, protocol_factory, ssl, server_hostname)
  File "C:\Users\PC\AppData\Local\Programs\Python\Python35\lib\asyncio\base_events.py", line 692, in _create_connection_transport
    yield from waiter
  File "C:\Users\PC\AppData\Local\Programs\Python\Python35\lib\asyncio\futures.py", line 385, in __iter__
    yield self  # This tells Task to wait for completion.
  File "C:\Users\PC\AppData\Local\Programs\Python\Python35\lib\asyncio\tasks.py", line 288, in _wakeup
    value = future.result()
  File "C:\Users\PC\AppData\Local\Programs\Python\Python35\lib\asyncio\futures.py", line 274, in result
    raise self._exception
  File "C:\Users\PC\AppData\Local\Programs\Python\Python35\lib\asyncio\events.py", line 125, in _run
    self._callback(*self._args)
  File "C:\Users\PC\AppData\Local\Programs\Python\Python35\lib\asyncio\selector_events.py", line 667, in _read_ready
    self._protocol.data_received(data)
  File "C:\Users\PC\AppData\Local\Programs\Python\Python35\lib\asyncio\sslproto.py", line 486, in data_received
    ssldata, appdata = self._sslpipe.feed_ssldata(data)
  File "C:\Users\PC\AppData\Local\Programs\Python\Python35\lib\asyncio\sslproto.py", line 200, in feed_ssldata
    self._sslobj.do_handshake()
  File "C:\Users\PC\AppData\Local\Programs\Python\Python35\lib\ssl.py", line 633, in do_handshake
    match_hostname(self.getpeercert(), self.server_hostname)
  File "C:\Users\PC\AppData\Local\Programs\Python\Python35\lib\ssl.py", line 300, in match_hostname
    % (hostname, dnsnames[0]))
ssl.CertificateError: hostname '127.0.0.1' doesn't match 'server'

有没有人知道任何例子?

0 个答案:

没有答案