HTTPS Python客户端

lc2*_*817 6 python https mobile certificate tornado

我有一个龙卷风服务器提供https连接,我用这种方式生成自签名证书:

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
Run Code Online (Sandbox Code Playgroud)

服务器的代码如下:

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()
Run Code Online (Sandbox Code Playgroud)

我想有一个连接到服务器的python客户端,并检查服务器是否是正确的服务器(我想通过它的证书).目前我做了一个像这样的简单客户:

import httplib
HOSTNAME='localhost'
conn = httplib.HTTPSConnection(HOSTNAME)
conn.putrequest('GET','/')
conn.endheaders()
response = conn.getresponse()
print response.read()
Run Code Online (Sandbox Code Playgroud)

你建议我做什么(客户端稍后将成为一个移动应用程序,我只使用python进行原型设计)?

谢谢.

Mat*_*ecu 3

如果您也控制客户端(例如在 Android 或 iPhone 应用程序中),您可以将自签名证书添加到受信任的证书存储中。

对于 Android 应用程序,这里有很好的解释