Cum de a asocia cn într-un cerc SSL de pyOpenSSL verify_cb la un socket generat

Sunt un pic nou pentru pyOpenSSL. Încerc să-mi dau seama cum să asocieze socket-ul generat la un cert SSL. verify_cb devine numit care îmi dă acces la cert și conn dar cum asociaz aceste lucruri atunci când se întâmplă acest lucru:

cli, addr = auto.server.accept ()

0
Doriți să acceptați răspunsul? :)
adăugat autor Jean-Paul Calderone, sursa

1 răspunsuri

După încheierea strângerii mâinii, puteți obține certificatul clientului. Deși certificatul client este, de asemenea, disponibil în verificarea inversă (verify_cb), nu există nici un motiv să încercați să faceți altceva decât să verificați certificatul în acel apel invers. Configurarea unei cartografiere specifice unei aplicații este mai bine făcută după ce strângerea de mână a avut succes cu succes. Așadar, luați în considerare utilizarea instanței OpenSSL.SSL.Connection returnată de metoda acceptă pentru a obține certificatul (și de acolo commonName) și asociați-o cu obiectul de conexiune la momentul respectiv. De exemplu,

client, clientAddress = self.server.accept()
client.do_handshake()
commonNamesToConnections[client.get_peer_certificate().commonName] = client

S-ar putea să doriți să verificați maparea pentru a vă asigura că nu suprascrieți nicio conexiune existentă (probabil folosind o listă de conexiuni în loc să cartografiați fiecare nume comun la unul). Și, desigur, trebuie să eliminați intrările atunci când conexiunile sunt pierdute.

Apelul "do_handshake" forțează strângerea de mână să se întâmple. Fără aceasta, strângerea de mână se va întâmpla când datele aplicației vor fi transferate mai întâi prin conexiune. E bine, dar ar face ca această cartografiere să fie ceva mai complicată.

0
adăugat
Python România
Python România
100 participanți

Comunitatea pasionaților de Python din România.