2016-12-26 4 views
0

Ich bin ein Server implementieren, die SSL-Zertifikat ohne Neustart neu laden kann. Als Ergebnis muss ich eine neue SSL_CTX erstellen, um die alte zu ersetzen. Gibt es jedoch, wenn noch einige SSL-Sitzungen existieren (erstellt von früheren SSL_CTX), ist es sicher, die alte zu befreien? Oder muss ich dafür eine Technik wie Referenzzählung verwenden?Ist es sicher, SSL_CTX nach dem Erstellen von SSL freizugeben

+0

Es ist schwer zu sagen im Moment. Wir müssen Ihren Code sehen und wie und wann Sie den Kontext freigeben. – jww

Antwort

1

Oder muss ich eine Technik wie Referenzzählung verwenden, um dies zu tun?

OpenSSL verwendet bereits Referenzzählung, so dass Sie keine eigenen implementieren müssen. SSL_CTX_free verringert nur den Referenzzähler und gibt nur dann den Speicher frei, wenn noch kein Objekt diesen CTX verwendet. Von der documentation of SSL_CTX_free:

SSL_CTX_free() den Referenzzähler von ctx dekrementiert, und entfernt das SSL_CTX Objekt durch ctx zeigte und den zugewiesenen Speicher freigibt, wenn die der Referenzzähler 0
erreicht hat Er fordert außerdem die kostenlose() Prozeduren für indirekt betroffene Elemente, falls zutreffend: der Sitzungs-Cache, die Liste der Chiffren, die Liste der Client-CAs, die Zertifikate und Schlüssel.

+0

Danke. Das ist wirklich praktisch, da OpenSSL bereits die Aufgabe für mich erledigt hat. –

Verwandte Themen