Я следил за блоком Python SSL socket echo test with self-signed certificate, чтобы протестировать простую связь сокетов SSL. Я создал самозаверяющий сертификат, и я использовал вышеупомянутый код Python, чтобы просто попробовать это.Wireshark не показывает SSL-пакеты с сокетами Python SSL
Все работает так, как описано, но проблема в том, что я не вижу никакого трафика SSL, когда я отслеживаю сетевые пакеты, используя Wireshark. Все, что я вижу, это просто обычные TCP-пакеты, но я ожидаю, что будет использоваться протокол SSL. Я что-то упускаю?
Для полноты картины добавить код:
client.py
import socket, ssl, pprint
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Require a certificate from the server. We used a self-signed certificate
# so here ca_certs must be the server certificate itself.
ssl_sock = ssl.wrap_socket(s,
ca_certs="server.crt",
cert_reqs=ssl.CERT_REQUIRED)
ssl_sock.connect(('localhost', 10023))
print repr(ssl_sock.getpeername())
print ssl_sock.cipher()
print pprint.pformat(ssl_sock.getpeercert())
ssl_sock.write("boo!")
if False: # from the Python 2.7.3 docs
# Set a simple HTTP request -- use httplib in actual code.
ssl_sock.write("""GET/HTTP/1.0\r
Host: www.verisign.com\n\n""")
# Read a chunk of data. Will not necessarily
# read all the data returned by the server.
data = ssl_sock.read()
# note that closing the SSLSocket will also close the underlying socket
ssl_sock.close()
server.py
import socket, ssl
bindsocket = socket.socket()
bindsocket.bind(('', 10023))
bindsocket.listen(5)
def do_something(connstream, data):
print "do_something:", data
return False
def deal_with_client(connstream):
data = connstream.read()
while data:
if not do_something(connstream, data):
break
data = connstream.read()
while True:
newsocket, fromaddr = bindsocket.accept()
connstream = ssl.wrap_socket(newsocket,
server_side=True,
certfile="server.crt",
keyfile="server.key")
try:
deal_with_client(connstream)
finally:
connstream.shutdown(socket.SHUT_RDWR)
connstream.close()
Wireshark скриншот:
ли он по-прежнему работает (функционально), если вы удалите все SSL от клиента? Например. вы уверены, что не только Wireshark не сообщает об использовании SSL? Например. В разделе «protocol» я бы * ожидал * видеть TCP, а не SSL, поскольку TCP - это протокол сетевого уровня, который вы используете. –
@TomDalton, Wireshark сообщает протокол SSL, если я просто просматриваю Google, поэтому я ожидал увидеть что-то подобное. Я удалю SSL с клиента, чтобы убедиться, что он работает или нет. –