Estoy escribiendo una aplicación que requiere la instalación de un certificado en el navegador del cliente. Encontré esto en los documentos PyOpenSSL para el objeto "Contexto" pero no puedo ver nada sobre cómo se supone que la devolución de llamada valida el certificado, solo que de alguna manera debería hacerlo.Validación de certificados de cliente en PyOpenSSL
set_verify(mode, callback) Set the verification flags for this Context object to mode and specify that callback should be used for verification callbacks. mode should be one of VERIFY_NONE and VERIFY_PEER. If VERIFY_PEER is used, mode can be OR:ed with VERIFY_FAIL_IF_NO_PEER_CERT and VERIFY_CLIENT_ONCE to further control the behaviour. callback should take five arguments: A Connection object, an X509 object, and three integer variables, which are in turn potential error number, error depth and return code. callback should return true if verification passes and false otherwise.
estoy contando el objeto de contexto donde mi (auto firmado) teclas son (ver más abajo) así que supongo que no entiendo por qué eso no es suficiente para la biblioteca para comprobar si el certificado presentado por el cliente es válido ¿Qué debería uno hacer en esta función de devolución de llamada?
class SecureAJAXServer(PlainAJAXServer):
def __init__(self, server_address, HandlerClass):
BaseServer.__init__(self, server_address, HandlerClass)
ctx = SSL.Context(SSL.SSLv23_METHOD)
ctx.use_privatekey_file ('keys/server.key')
ctx.use_certificate_file('keys/server.crt')
ctx.set_session_id("My_experimental_AJAX_Server")
ctx.set_verify(SSL.VERIFY_PEER | SSL.VERIFY_FAIL_IF_NO_PEER_CERT | SSL.VERIFY_CLIENT_ONCE, callback_func)
self.socket = SSL.Connection(ctx, socket.socket(self.address_family, self.socket_type))
self.server_bind()
self.server_activate()
Advertencia: Codificación de diversión aquí, definitivamente no es un profesional por lo que si mi Q revela mi cojera total ingenuidad y/o la falta de comprensión fundamental a la hora de SSL por favor, no ser demasiado duro!
Gracias :)
Roger