#!/usr/bin/python import ssl import socket import time # Work around python bug #5328 def SSLSocket_makefile_fixed(self, mode='r', bufsize=-1): from socket import _fileobject self._makefile_refs += 1 return _fileobject(self, mode, bufsize, True) ssl.SSLSocket.makefile = SSLSocket_makefile_fixed CERTFILE = "server.crt" KEYFILE = "server.key" HTTPS_PORT = 8443 SERVER = "localhost" def get_request(socket): result = "" while 1: result += socket.read() if "\r\n\r\n" in result: return result print repr(result) time.sleep(DELAY) if __name__ == "__main__": server_socket = socket.socket() server_socket.bind((SERVER, HTTPS_PORT)) server_socket.listen(5) new_socket, from_address = server_socket.accept() connection_stream = ssl.wrap_socket(new_socket, server_side = 1, certfile = CERTFILE, keyfile = KEYFILE, ssl_version = ssl.PROTOCOL_SSLv3) request = get_request(connection_stream) connection_stream.write("HTTP/1.0 200 OK\n") connection_stream.write("Content-type: text/html\n\n") connection_stream.write("Hello, world!\n") print "Closing socket..." connection_stream.close() print "Closed." time.sleep(5) print "Exiting..."