37 lines
909 B
Python
37 lines
909 B
Python
# Copyright (C) Jean-Paul Calderone
|
|
# See LICENSE for details.
|
|
|
|
from sys import argv, stdout
|
|
from socket import socket
|
|
|
|
from OpenSSL.SSL import TLSv1_METHOD, Context, Connection
|
|
|
|
|
|
def main():
|
|
"""
|
|
Connect to an SNI-enabled server and request a specific hostname, specified
|
|
by argv[1], of it.
|
|
"""
|
|
if len(argv) < 2:
|
|
print 'Usage: %s <hostname>' % (argv[0],)
|
|
return 1
|
|
|
|
client = socket()
|
|
|
|
print 'Connecting...',
|
|
stdout.flush()
|
|
client.connect(('127.0.0.1', 8443))
|
|
print 'connected', client.getpeername()
|
|
|
|
client_ssl = Connection(Context(TLSv1_METHOD), client)
|
|
client_ssl.set_connect_state()
|
|
client_ssl.set_tlsext_host_name(argv[1])
|
|
client_ssl.do_handshake()
|
|
print 'Server subject is', client_ssl.get_peer_certificate().get_subject()
|
|
client_ssl.close()
|
|
|
|
|
|
if __name__ == '__main__':
|
|
import client
|
|
raise SystemExit(client.main())
|