Skip to content

Instantly share code, notes, and snippets.

@bulv1ne
Created October 31, 2013 08:51
Show Gist options
  • Save bulv1ne/7246314 to your computer and use it in GitHub Desktop.
Save bulv1ne/7246314 to your computer and use it in GitHub Desktop.
import socket, ssl, pprint, threading, time
HOST = '127.0.0.1'
PORT = 8090
CA = 'server.csr'
KEY = 'server.key'
CERT = 'server.crt'
#openssl genrsa -des3 -out server.key.orig 2048
#openssl rsa -in server.key.orig -out server.key
#openssl req -new -key server.key -out server.csr
#openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
def reverse_string(s):
return s[::-1]
assert reverse_string('ABC') == 'CBA'
def server():
bindsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
bindsocket.bind((HOST, PORT))
bindsocket.listen(5)
newsocket, fromaddr = bindsocket.accept()
connstream = ssl.wrap_socket(newsocket,
server_side=True,
certfile=CERT,
keyfile=KEY,
ssl_version=ssl.PROTOCOL_TLSv1)
data = connstream.read()
print 'SERVER', data
connstream.write(reverse_string(data))
connstream.shutdown(socket.SHUT_RDWR)
connstream.close()
def client():
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ssl_sock = ssl.wrap_socket(s, ca_certs='server2.crt', cert_reqs=ssl.CERT_REQUIRED, ssl_version=ssl.PROTOCOL_TLSv1)
ssl_sock.connect((HOST, PORT))
print 'CLIENT', ssl_sock.cipher()
print 'CLIENT', pprint.pformat(ssl_sock.getpeercert())
ssl_sock.write("Hello")
print 'CLIENT', ssl_sock.read()
ssl_sock.close()
threads = []
for f in [server, client]:
t = threading.Thread(target=f)
t.start()
time.sleep(1)
threads.append(t)
for t in threads:
t.join()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment