Closed marians closed 1 year ago
So kann das Server-Zertifikat einfach ausgelesen werden:
ggf. wäre ja auch der Einsatz von sslyze
(macht auch json-output) interessant?
@patrickhanft Eventuell ja. Es scheint aber eine Menge Tools mit dem Namen zu geben. Welches meinst Du?
Dieses vermutlich? https://github.com/nabla-c0d3/sslyze
Ja, genau.
sslyze sieht gut aus, danke! Besonders, weil es analysiert, in welchem System eine CA (root) als vertrauenswürdig angesehen wird. Jedenfalls habe ich es so verstanden. Dazu auch https://nabla-c0d3.github.io/blog/2018/01/16/trust-stores-observatory/
Habe hier ein bisschen ausprobiert. Bisher ist es mir nicht gelungen, sslyze
in dem alpine-basierten Docker-Image zu kompilieren. Es hängt wohl an nassl
. Der letzte Fehler:
Traceback (most recent call last):
File "spider.py", line 25, in <module>
import checks
File "/checks/__init__.py", line 13, in <module>
from checks import tls_certificate
File "/checks/tls_certificate.py", line 7, in <module>
from sslyze.concurrent_scanner import ConcurrentScanner
File "/usr/local/lib/python3.6/site-packages/sslyze/concurrent_scanner.py", line 9, in <module>
from sslyze.plugins.plugin_base import PluginScanResult
File "/usr/local/lib/python3.6/site-packages/sslyze/plugins/plugin_base.py", line 12, in <module>
from sslyze.server_connectivity import ServerConnectivityInfo
File "/usr/local/lib/python3.6/site-packages/sslyze/server_connectivity.py", line 13, in <module>
from nassl.ssl_client import ClientCertificateRequested, OpenSslVersionEnum
File "/usr/local/lib/python3.6/site-packages/nassl/ssl_client.py", line 7, in <module>
from nassl import _nassl
ImportError: Error relocating /usr/local/lib/python3.6/site-packages/nassl/_nassl.cpython-36m-x86_64-linux-gnu.so: setcontext: symbol not found
Alternativen:
In https://github.com/netzbegruenung/green-spider/pull/70 ist ein neuer check enthalten, der mit pyOpenSSL
arbeitet.
Darin ist noch nicht enthalten:
Die Überprüfung der Gültigkeit des Hostnamen wird schon über Exceptions in einem anderen Test (url_reachability
) erfasst. Sofern das Zertifikat nicht zum Hostnamen passt, wir die URL nicht als erreichbar gewertet und die entsprechende Fehlermeldung wird erfasst.
Zur Prüfung, ob es sich beim Issuer um eine vertrauenswürdige CA handelt:
In https://github.com/nabla-c0d3/trust_stores_observatory sind die trusted root CAs für Windows, Mac OS, iOS, Mozilla und Android enthalten. Ist die Issuer CA in der jeweiligen Sammlung enthalten, sollte das Zertifikat als vertrauenswürdig gelten.
Mir ist noch nicht klar, wie der Abgleich technisch funktionieren kann. Und ob dafür die gesamte Zertifikat-Kette benötigt wird.
Ein Code-Beispiel (das so allerdings nicht 1:1 funktionieren kann) ist in http://aviadas.com/blog/2015/06/18/verifying-x509-certificate-chain-of-trust-in-python/ zu finden.
https://github.com/netzbegruenung/green-spider-webapp/pull/60 ist ein Schritt in die Richtung dieses Issues.
Schließe das Issue, in der Annahme, dass die aktuell gezeigten Informationen erst mal ausreichen.
Wir sollten Details zu HTTPS-Zertifikaten erfassen und Aussagen darüber treffen können,