Projekt

Allgemein

Profil

Aktionen

Bug #295

offen

Falsche Meldung "Zertifikat-Besitzer passt nicht zum Hostnamen"

Von mlenk vor mehr als 2 Jahren hinzugefügt. Vor mehr als 2 Jahren aktualisiert.

Status:
Resolved
Priorität:
High
Kategorie:
Gwenhywfar
Beginn:
16.04.2023
Abgabedatum:
Betriebssystem:
Linux
AqBanking-Version:
6.2.10
Anwendung:
aqbanking-cli
Version der Anwendung:

Beschreibung

Hallo Martin,

Seit ein paar Tagen funktioniert die Kommunikation mit den Servern z.B. der GLS Bank nicht mehr. Es kommt die Meldung "Zertifikat-Besitzer passt nicht zum Hostnamen". Konfiguriert ist schon sehr lange die URL https://hbci-pintan.gad.de/cgi-bin/hbciservlet, d.h. es wird erwartet, dass das Zertifikat für den Hostnamen hbci-pintan.gad.de gültig ist.

Schaut man sich das vom Server vorgelegte Zertifikat näher an, ist leider festzustellen, dass dieses tatsächlich (auch) für hbci-pintan.gad.de gültig ist. In der Zertifikatserweiterung SubjectAltName (SAN) wird hbci-pintan.gad.de korrekt aufgeführt.

Zitat von https://en.wikipedia.org/wiki/Subject_Alternative_Name

RFC 2818 (May 2000) specifies Subject Alternative Names as the preferred method of adding DNS names to certificates, deprecating the previous method of putting DNS names in the commonName field.[3] Google Chrome version 58 (March 2017) removed support for checking the commonName field at all, instead only looking at the SANs.

Wenn das Zertifikat also gültig ist aber von AqBanking nicht als korrekt akzeptiert wird, liegt hier wohl ein Bug vor.

Ich habe mich gleich im Code auf die Suche gemacht. Anscheinend ist die inkorrekte Prüfung in src/sio/syncio_tls.c an dieser Stelle:

1041       rv=gnutls_x509_crt_get_dn_by_oid(cert, GNUTLS_OID_X520_COMMON_NAME, 0, 0, buffer1, &size);
1042       if (rv==0) {
1043         GWEN_SslCertDescr_SetCommonName(certDescr, buffer1);
1044         if (xio->hostName && strcasecmp(xio->hostName, buffer1)!=0) {
1045           DBG_INFO(GWEN_LOGDOMAIN, "Owner of certificate does not match hostname");
1046           errFlags|=GWEN_SSL_CERT_FLAGS_BAD_HOSTNAME;
1047         }

Hier wird offenbar nur der Common Name aus dem Zertifikat geprüft, aber nicht die "Subject Alt Name"-Erweiterung.

Gibt es einen Grund, warum in Gwenhywfar die Prüfung von Hand implementiert hat, obwohl GnuTLS die Verifikation des Hostnames (und vieler anderer Parameter) schon von Haus aus macht (API-Funktion gnutls_session_set_verify_cert)?

Aktionen

Auch abrufbar als: Atom PDF