blob: 428525b2aa2ca38d28b89796f6da6c5dec7ec98f [file] [log] [blame]
Jean-Paul Calderone7fb6b212011-06-06 08:31:28 -04001# Copyright (C) Jean-Paul Calderone
2# See LICENSE for details.
3
Jean-Paul Calderone7fb6b212011-06-06 08:31:28 -04004from sys import argv, stdout
5from socket import socket
6
7from OpenSSL.SSL import TLSv1_METHOD, Context, Connection
8
Hynek Schlawack8b7e4552016-03-13 07:51:09 +01009
Jean-Paul Calderone7fb6b212011-06-06 08:31:28 -040010def main():
11 """
12 Connect to an SNI-enabled server and request a specific hostname, specified
13 by argv[1], of it.
14 """
15 if len(argv) < 2:
16 print 'Usage: %s <hostname>' % (argv[0],)
17 return 1
18
19 client = socket()
20
21 print 'Connecting...',
22 stdout.flush()
23 client.connect(('127.0.0.1', 8443))
24 print 'connected', client.getpeername()
25
26 client_ssl = Connection(Context(TLSv1_METHOD), client)
27 client_ssl.set_connect_state()
28 client_ssl.set_tlsext_host_name(argv[1])
29 client_ssl.do_handshake()
30 print 'Server subject is', client_ssl.get_peer_certificate().get_subject()
31 client_ssl.close()
32
Hynek Schlawack8b7e4552016-03-13 07:51:09 +010033
34if __name__ == '__main__':
35 import client
36 raise SystemExit(client.main())