Я работал над использованием команды openssl getpeercert () для проверки сертификата клиентов на общее имя и, если возможно, с проверкой SAN. Ie проверка предметного поля. Намерение состоит в том, чтобы сделать аутентификацию без пароля с полной взаимной аутентификацией. Будет ли это поддерживать dummyAuthrizer? Проблема с авторизатором unix заключается в том, что идентификаторы unix основаны на AD. Поэтому лучше всего использовать только сертификат Auth и dummyauthrizer. Вот то, что я пытался, но соединение зависало без печати сертификата с клиентской стороны.
class MyHandler(FTPHandler):
def on_connect(self):
print "%s:%s connected" %
(self.remote_ip,
self.remote_port) Print(Self.socket.get_peer_certificate())
Print(self.get_repr_info())
Def main():
Context =ssl.SSLContext(ssl.protocol_tlsv1_2)
Context.load_verify_location(cafile)
Context.Load_cert_chain(certfile,keyfile)
Handler = myhandler
Handler.certfile= certfile
Handler.keyfile=keyfile
Handler.ssl_protocol = SSL.TLSv1_2_METHOD
Если я могу получить и распечатать сертификат клиента, я намерен расшифровать его дальше, чтобы проверить и сопоставить различные поля, такие как общее имя и проверки SAN, но на данный момент я даже не могу распечатать, какие сертификаты и шифры используются при подключении.
Спасибо,