2011-11-08 25 views
6

Tôi có một máy chủ cơn lốc xoáy mà cung cấp một kết nối https với một chứng chỉ tự ký kết mà tôi tạo ra theo cách này:HTTPS Python client

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 

Mã của máy chủ như sau:

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() 

Tôi muốn có một khách hàng python kết nối với máy chủ và kiểm tra xem máy chủ có phải là máy chủ phù hợp không (tôi đoán qua chứng chỉ của nó). Đối với thời điểm này tôi đã làm một khách hàng đơn giản như thế này:

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

Những gì bạn sẽ đề nghị tôi làm (Khách hàng sẽ về sau là một ứng dụng di động tôi chỉ sử dụng python cho prototyping)?

Cảm ơn.

+0

Nếu bạn có thể cung cấp cho tôi một khách hàng trong Java mà cũng là OK. – lc2817

+0

liên quan http://www.heikkitoivonen.net/blog/2010/08/23/ssl-in-python-2-7/ – jfs

+0

liên quan: http://stackoverflow.com/questions/1087227/validate-ssl-certificates -with-python – jfs

Trả lời

3

Nếu bạn kiểm soát phía máy khách (như trong ứng dụng android hoặc iphone), bạn có thể thêm chứng chỉ tự ký của mình vào kho chứng chỉ tin cậy.

Đó là cũng giải thích here for an Android app

+0

Cảm ơn, bạn có thể cho tôi biết thêm thông tin về cách thực hiện trên ứng dụng IPhone không? – lc2817

1

Không có cách nào để khách hàng đảm bảo rằng máy chủ nói sự thật. Bạn có thể tạo chứng chỉ tự ký cho google.com.

+0

Giả sử tôi có thể đăng ký chứng chỉ của tôi trên cơ quan cấp chứng chỉ, tôi nên làm gì sau đó? – lc2817

+0

@ lc2817: sau đó bạn có thể sử dụng [một trong những câu trả lời] (http://stackoverflow.com/questions/1087227/validate-ssl-certificates-with-python) Tôi đã liên kết trước đó. – jfs

+0

Bạn không trả lời nhận xét cuối cùng của tôi về các liên kết khác. – lc2817