I have a tornado server that provide an https connection with a self signed certificate that I generated this way:
openssl genrsa -out privatekey.pem 1024
openssl req -new -key privatekey.pem -out certrequest.csr
openssl x509 -req -in certrequest.csr -signkey privatekey.pem -out certificate.pem
The code of the server is the following:
import tornado.ioloop
import tornado.web
import tornado.httpserver
import os
class MainHandler(tornado.web.RequestHandler):
def get(self):
print "new client "+str(self)
self.write("Hello, world")
application = tornado.web.Application([
(r"/", MainHandler),
])
http_server = tornado.httpserver.HTTPServer(application,
ssl_options={
"certfile": os.path.join("./", "certificate.pem"),
"keyfile": os.path.join("./", "privatekey.pem"),
})
if __name__ == "__main__":
http_server.listen(443)
tornado.ioloop.IOLoop.instance().start()
I want to have a python client that connect to the server and check that the server is the right server (I guess through its certificate). For the moment I did a simple client like this:
import httplib
HOSTNAME='localhost'
conn = httplib.HTTPSConnection(HOSTNAME)
conn.putrequest('GET','/')
conn.endheaders()
response = conn.getresponse()
print response.read()
What would you suggest me to do (The client will later on be a mobile app I only use python for prototyping)?
Thanks.
Practical Data Science using Python In the http protocol, the request from the client reaches the server and fetches some data and metadata assuming it is a valid request. We can analyze this response from the server using various functions available in the python requests module.
Requests verifies SSL certificates for HTTPS requests, just like a web browser.
If you control the client side too (like in an android or iphone app) you can add your self-signed certificate to your trusted certificate store.
It is well explained here for an Android app
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With