2015-10-05 3 views
2

Просматривая документы Tornado, я не могу найти обращение о двухсторонней аутентификации SSL. В настоящее время кода выглядит что-то вроде этого, используя самоподписанные сертификатов:Взаимная аутентификация в торнадо с самоподписанными сертификатами

import tornado.ioloop 
import tornado.web 
import tornado.httpserver 

class fooHandler(tornado.web.RequestHandler): 
    def get(self): 
     #Do Something 

if __name__ == "__main__": 
    application = tornado.web.Application([ 
     (r"/foo/", fooHandler), 
    ]) 
    http_server = tornado.httpserver.HTTPServer(application, ssl_options={ 
      "certfile": "./cert.pem", 
      "keyfile": "./key.pem", 
     }) 
    http_server.listen(8888) 
    tornado.ioloop.IOLoop.instance().start() 
+0

[Origin-Bound Certificates: свежий подход к сильному клиенту Аутентификация для Интернета] (https://www.usenix.org/system/files/conference/usenixsecurity12/sec12-final162.pdf) и [Токен Binding Protocol] (https://tools.ietf.org/html/draft-ietf-tokbind-protocol). – jww

ответ

1

Вам нужно установить verify_mode из ваших ssl.SSLContext:

ssl_ctx = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH) 
ssl_ctx.load_cert_chain("cert.pem", "key.pem") 
# If your certs are not self-signed, load your CA certificates here. 
#ssl_ctx.load_verify_locations("cacerts.pem") 
ssl_ctx.verify_mode = ssl.CERT_REQUIRED 
http_server = HTTPServer(application, ssl_options=ssl_ctx) 

Затем вы можете использовать self.request.get_ssl_certificate, чтобы получить сертификат клиента.

 Смежные вопросы

  • Нет связанных вопросов^_^