|
Server : Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.8e-fips-rhel5 DAV/2 PHP/5.2.17 System : Linux localhost 2.6.18-419.el5 #1 SMP Fri Feb 24 22:47:42 UTC 2017 x86_64 User : nobody ( 99) PHP Version : 5.2.17 Disable Function : NONE Directory : /usr/share/doc/m2crypto-0.16/demo/ssl/ |
Upload File : |
#!/usr/bin/python
"""A simple SSL 'echo' client that uses the BIO interface.
Copyright (c) 1999-2003 Ng Pheng Siong. All rights reserved."""
import getopt, sys
from M2Crypto import SSL, X509
host='127.0.0.1'
port=9999
optlist, optarg=getopt.getopt(sys.argv[1:], 'h:p:')
for opt in optlist:
if '-h' in opt:
host=opt[1]
elif '-p' in opt:
port=opt[1]
ctx=SSL.Context('sslv3')
ctx.load_cert('client.pem')
ctx.load_verify_info('ca.pem')
ctx.load_client_ca('ca.pem')
ctx.set_verify(SSL.verify_peer, 10)
ctx.set_info_callback()
s=SSL.Connection(ctx)
s.connect((host, port))
print 'Cipher =', s.get_cipher().name()
v = s.get_verify_result()
if v != X509.V_OK:
raise SystemExit, 'Server verification failed'
peer = s.get_peer_cert()
print 'Server =', peer.get_subject().CN
bio = s.makefile('rw')
#s.close() # XXX currently this kills M2Crypto.
while 1:
data = bio.readline()
if not data:
break
sys.stdout.write(data)
sys.stdout.flush()
buf=sys.stdin.readline()
if not buf:
break
n = bio.write(buf)
bio.flush()
bio.close()
s.close()