Mam serwer tornado, które zapewniają połączenia https z siebie podpisane zaświadczenia, że wygenerowany w ten sposób:HTTPS Python klient
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
Kod serwera jest następujący:
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()
Chcę mieć klienta Pythona, który łączy się z serwerem i sprawdza, czy serwer jest właściwym serwerem (jak sądzę przez jego certyfikat). Na razie zrobiłem prosty klient tak:
import httplib
HOSTNAME='localhost'
conn = httplib.HTTPSConnection(HOSTNAME)
conn.putrequest('GET','/')
conn.endheaders()
response = conn.getresponse()
print response.read()
Co proponujesz mi zrobić (klient będzie później być mobilna aplikacja używam tylko Pythona dla prototypów)?
Dzięki.
Jeśli możesz podać mi klienta w Javie, który jest również OK. – lc2817
powiązane http://www.heikkitoivonen.net/blog/2010/08/23/ssl-in-python-2-7/ – jfs
powiązane: http://stackoverflow.com/questions/1087227/validate-ssl-certificates -with-python – jfs