Ab CherryPy 3.0 kann unidirektionales SSL einfach durch Zeigen auf das Server-Zertifikat und den privaten Schlüssel wie folgt aktiviert werden:
%Vor%Dies ermöglicht Clients, die Authentizität des Servers zu überprüfen. Weiß jemand, ob CherryPy 2-Wege-SSL unterstützt, z. Wo kann der Server auch die Client-Authentizität durch Validierung eines Client-Zertifikats überprüfen?
Wenn ja, könnte jemand ein Beispiel geben, wie wird das gemacht? Oder einen Verweis auf ein Beispiel veröffentlichen?
Ich habe nach dem gleichen gesucht. Ich weiß, dass es einige Patches auf der CherryPy-Site gibt.
Ich fand auch Folgendes bei der CherryPy SSL-Client-Authentifizierung . Ich habe dies nicht mit den CherryPy-Patches verglichen, aber die Informationen werden vielleicht hilfreich sein.
%Vor%Wir mussten vor kurzem ein schnelles entwickeln aber resiliente REST-Anwendung und festgestellt, dass CherryPy unseren Bedürfnissen entsprach besser als andere Python-Netzwerke Frameworks, wie Twisted. Leider fehlte seiner Einfachheit ein Schlüsselfeature, die wir brauchten, Server / Client SSL-Zertifikat-Validierung Deshalb Wir haben ein paar Stunden damit verbracht, ein paar zu schreiben schnelle Änderungen an der aktuellen Veröffentlichung, 3.1.2. Der folgende Code Schnipsel sind die Modifikationen, die wir machen gemacht:
Die obigen Patches erfordern die Aufnahme einer neuen Konfiguration Option innerhalb des CherryPy-Servers Aufbau, server.ssl_ca_certificate. Dies Option identifiziert das Zertifikat Berechtigungsdatei, die Clients verbindet wird gegen validiert, wenn die Client zeigt keinen gültigen Client an Zertifikat wird es schließen Verbindung sofort.
Unsere Lösung hat Vorteile und Nachteile, der Hauptvorteil wenn der verbindende Client dies nicht tut ein gültiges Zertifikat vorlegen Die Verbindung ist sofort geschlossen. Dies ist gut für Sicherheitsfragen wie es erlaubt dem Kunden nichts Zugriff auf die CherryPy-Anwendung Stapel. Seit der Einschränkung ist auf der Socket-Ebene der getan CherryPy Anwendung kann nie sehen Client verbinden und damit die Lösung ist etwas unflexibel.
Eine optimale Lösung würde das ermöglichen Client, um eine Verbindung zum CherryPy herzustellen Socket und senden Sie das Client-Zertifikat in den Anwendungsstapel. Dann ein Das benutzerdefinierte CherryPy-Tool würde validiert das Zertifikat in der Anwendungsstapel und schließen Sie die Verbindung bei Bedarf; Unglücklicherweise wegen der Struktur von CherryPy's pyOpenSSL-Implementierung ist es schwierig, den Kunden zu finden Zertifikat innerhalb der Anwendung Stapel.
Natürlich sollten die obigen Patches nur auf eigene Gefahr verwendet werden. Wenn du eine bessere Lösung finden Sie bitte lass es uns wissen.
Wenn die aktuelle Version von CherryPy die Überprüfung von Clientzertifikaten nicht unterstützt, ist es möglich, CherryPy so zu konfigurieren, dass 127.0.0.1:80 gehört wird, HAProxy installiert wird, um 443 zu hören und clientseitige Zertifikate zu prüfen und Datenverkehr an 127.0.0.1 weiterzuleiten : 80 HAProxy ist einfach, leicht, schnell und zuverlässig. Ein Beispiel für die HAProxy-Konfiguration
Tags und Links ssl client-certificates certificate ssl-certificate cherrypy