Skip to content

Commit

Permalink
https: Add a simple HTTPS server for testing
Browse files Browse the repository at this point in the history
The server can be used with QEMU and Zephyr HTTPS client sample
application for testing purposes.

Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
  • Loading branch information
jukkar committed Jun 6, 2017
1 parent 4a9b704 commit 51ec764
Show file tree
Hide file tree
Showing 2 changed files with 97 additions and 0 deletions.
46 changes: 46 additions & 0 deletions https-server.pem
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCxDz9vS/+nxr6w
OsFQ9ZGjzEuaNjvIewMCIJ1fBZ3u+Kv+TcjFq3f7OYwM7oPsjEaiw/FG6wNrPb8C
sJH5SsRxWXiIdQbbbU3d9R5sj4hObaqdvzdkqiJum1W//EePougpFvivElpOPoUG
xHgGgMzcataB/0CqpKtQs1bE46C4lFtvnVsNYgtGRnn6Gm5ciAriHwQR+DkiuSji
gPKCnTh6LnGDDh12177CVWjT/sCWvPqmg6LeObNrZYg5Y19OsTczsElkhsxW44sh
JuWLoTtVRCKI0Pn3uBH06A9NDqwuXk1CNgUOXiexQPLnY6gBPOsZo/X+txsU2x71
Ml8d73vDAgMBAAECggEAaEd4rs3txhxxVk1kaZAXtIavyCVE1HBOd0RKKxqdx47B
jUa2hmTUhyt/ZmZbYEfFmjsYsRHcs55sDuN7NX1pcPCm4oc6AKXBhIXG410thDNm
lv11XF4vZUErIaUtaFUjsn+K+2EtuoNryW6Q2hOlk/OAXpO8vEO7eg4FfnQpxkru
LHhwoTQN+b4Eas1I6SAEcZvxedZqvv8tCddbvS/S2MbzUdcco9erdzJNDIrRX2K8
T61AvRaSeeWonMbu9W5ONjQuqeLHj8uS8h++IfiRWq+Iz55Wdl4CSGrSaA+rIm7+
AgKkSon0CJaRo5OeWq/F3XtoZFt+6fa8tkd5r8o30QKBgQDpiGP+6iqvRHrwxr1d
MG4us4glrSolcKOQTNcZn8pOw6l/xbpTvtCtqRhi1ZpblGQLTXi8MUftg+tpX761
HA+R+A7K/pluymWCZLTRRX0LapCFKAP/80msl9zW/nrxZAEXgRxJ1YdE+XUnAXxs
TU96zA+hRMmoOSa2RsJdp0Q/dQKBgQDCF/7C6qnNK+lJwyTnvj94EvFQrDKU3Dbd
QB2ByOucrfOWI9KVlNIGX/Eo3JSqjk4WFCW7uLA/RndicgVDCLFM6V9Sjp1NS6Hs
k5/1/fZSTfGof/BrhUwFrj6TiY1vI88IkTkZ1T6ge4eL//lJiUDbs26y/QyBt/Hc
YnszmLvfVwKBgBP+fGk3zT3CRDBXI6FV4ykWb+Kh58ja0vYozgXAm4aQ0/M/j4tZ
++3SW2ci2JtcohAhquOZ6ImaUM5txxskcuTRcxrIH4TPyU8Xpi+AnosarZLo8Sa5
wqYHPn4dvZLrN/i2MiDUKkeqf/A9/VQcbmCaFgB9rjI76meSuVNhXcN9AoGAdwtI
kjxjkReRqlAqXojtXLQhlh1HmM3ISMN+VY/qEtsOP9QQ4PW6K3bE7w77j/BgLGKH
EjAgyW5q4tKUL50xQb8RXA1kpXfyBKw2vCXb4ncz9OkjiI7lJcbNUqhXOwd3gAWy
RAnqs3uQk2mYeGXaheXzy4wxE47CpS0x61+OO1kCgYEAmmkJlzoQZ/f7YHyjTsN9
p1I5oXVJtVNsoeGivFz9I66iaQBB0/mZzQctRvgZP3RkXtquoRTYX5CWeCCq4L0m
uMqxp8fb9u2vTQZpOlq0jCWWq6Mn2csrtbZ88BAnJEYQVS9dZnemzRYHhusKHswP
JAllIOIjhZQNliKQo8F5cKU=
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIC+zCCAeOgAwIBAgIJAOxwUeP5dw46MA0GCSqGSIb3DQEBCwUAMBQxEjAQBgNV
BAMMCWxvY2FsaG9zdDAeFw0xNzA1MzExNDExNTNaFw00NDEwMTYxNDExNTNaMBQx
EjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
ggEBALEPP29L/6fGvrA6wVD1kaPMS5o2O8h7AwIgnV8Fne74q/5NyMWrd/s5jAzu
g+yMRqLD8UbrA2s9vwKwkflKxHFZeIh1BtttTd31HmyPiE5tqp2/N2SqIm6bVb/8
R4+i6CkW+K8SWk4+hQbEeAaAzNxq1oH/QKqkq1CzVsTjoLiUW2+dWw1iC0ZGefoa
blyICuIfBBH4OSK5KOKA8oKdOHoucYMOHXbXvsJVaNP+wJa8+qaDot45s2tliDlj
X06xNzOwSWSGzFbjiyEm5YuhO1VEIojQ+fe4EfToD00OrC5eTUI2BQ5eJ7FA8udj
qAE86xmj9f63GxTbHvUyXx3ve8MCAwEAAaNQME4wHQYDVR0OBBYEFLW83bDG7ZWw
luyWcueSk5A/hCk6MB8GA1UdIwQYMBaAFLW83bDG7ZWwluyWcueSk5A/hCk6MAwG
A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAIfVtAO6VOwUQ2zp4QI698uV
3ESxYIg1K6kTTWkvXkvYMlG5Wuvsan83V4zCTpclKSqePPr73eN9HkcGEOEXU+zM
1eS4RfW8TDj9eLbGt0cBGzWC4gXJiMEx6Rr0VpcnjF5u9Iqty+YWQ/8MH10kTeOo
juAtOmcrVe3VwB8bDx+PwHd0ZZCTWxi+qU/ST5jOEokiihaW68aHOc6IXgNRChPp
I01gZVUFRevaJP5g1Yk41cSegGEPkmNO1X8ps2wrIzV28Ih5u7GiW1Gca+MwAAEr
zf8HsbGwZc56AXnpqKpM55T1cmfwPQe36lyUk8Cz/WzivmwsfbIlGRreK8kwCpc=
-----END CERTIFICATE-----
51 changes: 51 additions & 0 deletions https-server.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
#!/usr/bin/python

# HTTPS server test application.
#
# You can generate certificate file like this:
# openssl req -x509 -newkey rsa:2048 -keyout https-server.pem \
# -out https-server.pem -days 10000 -nodes \
# -subj '/CN=localhost'
#
# To see the contents of the certificate do this:
# openssl x509 -in https-server.pem -text -noout
#
# To add the cert into your application do this:
# openssl x509 -in https-server.pem -C -noout
#

import socket
from BaseHTTPServer import HTTPServer
from SimpleHTTPServer import SimpleHTTPRequestHandler
import ssl

PORT = 4443

class HTTPServerV6(HTTPServer):
address_family = socket.AF_INET6

class RequestHandler(SimpleHTTPRequestHandler):
length = 0

def _set_headers(self):
self.send_response(200)
self.send_header('Content-Type', 'text/html')
self.send_header('Content-Length', str(self.length))
self.end_headers()

def do_POST(self):
payload = "<html><p>Done</p></html>"
self.length = len(payload)
self._set_headers()
self.wfile.write(payload)

def main():
httpd = HTTPServerV6(("", PORT), RequestHandler)
print "Serving at port", PORT
httpd.socket = ssl.wrap_socket(httpd.socket,
certfile='./https-server.pem',
server_side=True)
httpd.serve_forever()

if __name__ == '__main__':
main()

0 comments on commit 51ec764

Please sign in to comment.