我有一个龙卷风服务器,提供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
服务器的代码如下:
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()
我希望有一个连接到服务器的python客户端,并检查服务器是否是正确的服务器(我想通过它的证书)。 目前我做了一个像这样的简单客户:
import httplib
HOSTNAME='localhost'
conn = httplib.HTTPSConnection(HOSTNAME)
conn.putrequest('GET','/')
conn.endheaders()
response = conn.getresponse()
print response.read()
您建议我做什么(客户端稍后会成为移动应用我只使用python进行原型设计)?
感谢。
答案 0 :(得分:3)
如果您也控制客户端(例如在Android或iPhone应用程序中),您可以将自签名证书添加到受信任的证书存储区。
很好地解释了here for an Android app
答案 1 :(得分:1)
客户端无法确保服务器说出真相。您可以为google.com创建自签名证书。