1from SocketServer import *
2from BaseHTTPServer import *
3from SimpleHTTPServer import *
4from tlslite.api import *
5
6s = open("./serverX509Cert.pem").read()
7x509 = X509()
8x509.parse(s)
9certChain = X509CertChain([x509])
10
11s = open("./serverX509Key.pem").read()
12privateKey = parsePEMKey(s, private=True)
13
14sessionCache = SessionCache()
15
16class MyHTTPServer(ThreadingMixIn, TLSSocketServerMixIn, HTTPServer):
17    def handshake(self, tlsConnection):
18        try:
19            tlsConnection.handshakeServer(certChain=certChain,
20                                          privateKey=privateKey,
21                                          sessionCache=sessionCache)
22            tlsConnection.ignoreAbruptClose = True
23            return True
24        except TLSError, error:
25            print "Handshake failure:", str(error)
26            return False
27
28httpd = MyHTTPServer(('localhost', 443), SimpleHTTPRequestHandler)
29httpd.serve_forever()