> openssl genrsa -out key.pem 1024
> openssl req -new -key key.pem -out request.pem
> openssl req -x509 -days 30 -key key.pem -in request.pem -out certificate.pem
> python SimpleSecureHTTPServer.py
see original source for more details
> openssl genrsa -out key.pem 1024
> openssl req -new -key key.pem -out request.pem
> openssl req -x509 -days 30 -key key.pem -in request.pem -out certificate.pem
> python SimpleSecureHTTPServer.py
see original source for more details
''' | |
SimpleSecureHTTPServer.py - simple HTTP server supporting SSL. | |
- replace fpem and cpem with the location of your .pem server file. | |
- the default port is 8443. | |
usage: python SimpleSecureHTTPServer.py | |
source: http://dennis.dieploegers.de/doku.php/my2cents/creating_a_ssl_http_server_in_python | |
''' | |
import socket, os | |
from SocketServer import BaseServer | |
from BaseHTTPServer import HTTPServer | |
from SimpleHTTPServer import SimpleHTTPRequestHandler | |
import ssl | |
class SecureHTTPServer(HTTPServer): | |
def __init__(self, server_address, HandlerClass): | |
BaseServer.__init__(self, server_address, HandlerClass) | |
fpem = 'key.pem' | |
cpem = 'certificate.pem' | |
self.socket = ssl.SSLSocket( | |
socket.socket(self.address_family,self.socket_type), | |
keyfile = fpem, | |
certfile = cpem | |
) | |
self.server_bind() | |
self.server_activate() | |
class SecureHTTPRequestHandler(SimpleHTTPRequestHandler): | |
def setup(self): | |
self.connection = self.request | |
self.rfile = socket._fileobject(self.request, "rb", self.rbufsize) | |
self.wfile = socket._fileobject(self.request, "wb", self.wbufsize) | |
def test(HandlerClass = SecureHTTPRequestHandler, | |
ServerClass = SecureHTTPServer): | |
server_address = ('', 8443) # (address, port) | |
httpd = ServerClass(server_address, HandlerClass) | |
sa = httpd.socket.getsockname() | |
print "Serving HTTPS on", sa[0], "port", sa[1], "..." | |
httpd.serve_forever() | |
if __name__ == '__main__': | |
test() |