Ich bin auf Boost SSL Client. Es gibt einen Hinweis auf OpenSSL in den Kommentaren (sorry, keine Zeilennummern):Boost, Asio, https und Host/Zertifikat Verifcation
// The verify callback can be used to check whether the certificate that is
// being presented is valid for the peer. For example, RFC 2818 describes
// the steps involved in doing this for HTTPS. Consult the OpenSSL
// documentation for more details. Note that the callback is called once
// for each certificate in the certificate chain, starting from the root
// certificate authority.
Proper OpenSSL Verwendung und Überprüfung kann schwierig sein. Aus Erfahrung weiß ich, ich folgende ausführen muß korrekt die Bibliothek zu benutzen:
- Disable SSLv2, SSLv3 und Kompression auf dem Kontextobjekt
- das richtige Stammzertifikat für die Kettenbildung Geben und
- Überprüfung rufen Sie
SSL_get_peer_certificate
und überprüfen Sie das Zertifikat nicht-NULL - Anruf
SSL_get_verify_result
und das Ergebnis verifizieren istX509_V_OK
- name matching Perform (CN oder SAN muss angeforderten Hostspiel)
OpenSSL 1.1.0 bietet eine Namensüberprüfung, aber nur in HEAD zu diesem Zeitpunkt. Von den OpenSSL Change Log:
Integrate hostname, email address and IP address checking with certificate
verification. New verify options supporting checking in opensl utility.
Und:
New functions to check a hostname email or IP address against a
certificate. Add options x509 utility to print results of checks against
a certificate.
Ich sehe nicht, wo Erhöhung im Client-Code eine der Konfigurationen oder Kontrollen durchführt.
Was genau konfiguriert Boost und was wird in der Bibliothekskomponente asio
bei der Verwendung von SSL überprüft oder verifiziert?
Sorry wegen der späten Antwort/Daumen hoch. Stackoverflow hat etwas mit ihrer Site verändert und ihre Seite ist nun unter den EFFs (https://www.eff.org/https-everywhere) aufgeteilt. Ich musste warten, bis ich auf eine andere Maschine kam. – jww
Ich glaube, es ist kaputt, auch wenn Sie den Callback implementieren. Ich bin ziemlich sicher, dass 'SSL_get_peer_certificate' immer noch aufgerufen werden muss (obwohl der Callback aufgerufen wird); 'SSL_get_verify_result' muss noch aufgerufen werden (obwohl der Callback aufgerufen wird); und beides geschieht außerhalb des Rückrufs. – jww
Nichts in meinem Verständnis ist gebrochen. Der Rückruf wird aufgerufen, nachdem OpenSSL die vorläufige Überprüfung durchgeführt hat. Der Callback wird mit dem Preverification-Status aufgerufen, damit die Anwendung entscheiden kann, ob sie das Zertifikat akzeptiert oder nicht. Wenn Sie nichts mehr zu überprüfen haben, müssen Sie den Rückruf nicht einmal implementieren. '' SSL_get_peer_certificate'' und '' SSL_get_verify_result'' sind Hilfsfunktionen, die Ihnen helfen, zusätzliche Informationen über das Zertifikat und den Verifizierungsprozess zu erhalten. Es hat nichts mit Callback zu tun. So funktioniert OpenSSL ohne Boost. – Karthik