Nach einiger Zeit versuchte ich etwas zu suchen, um zu sehen, ob ich etwas dagegen tun kann. Beim Durchsuchen des Patches und der Handbuchseite werden mehrere Dinge erwähnt:
[...] Zeile muss base64-codiertes X.509-Zertifikat (alter Stil) oder ein Schlüsselwort (neuer Stil) enthalten, optional gefolgt von dem Symbol '=' (gleich) oder ':' (Doppelpunkt), null oder mehr Leerzeichen und X .509 Zertifikat "Distinguished Name" (Betreff). Bei dem Schlüsselwort wird nicht zwischen Groß- und Kleinschreibung unterschieden. Es kann zwischen 'Betreff', 'Distinguished Name', 'Distinguished-Name', 'Distinguished_Name', 'DistinguishedName' oder 'DN' bestehen. Trennzeichen für Betreffelemente können '/' (Schrägstrich), ',' (Komma) oder gemischt sein. Die Reihenfolge ist nicht wichtig.
Wir können beobachten, dass wir die Schlüsselwerte auch mit einem Schrägstrich trennen können, was den Parser glücklicher machen kann:
subject:O=GrandsChocolatiers, Ltd./OU=Management/OU=Top
Aber leider nicht Der Parser sieht sehr "dumm" aus, analysiert beide Trennzeichen unabhängig vom Kontext und unterstützt keine Escape-Sequenzen:
+static const char* +x509key_find_subject(const char* s) { + static const char *keywords[] = { + "subject", + "distinguished name", + "distinguished-name", + "distinguished_name", + "distinguishedname", + "dn", + NULL + }; + const char **q, *p; + size_t len; + + if (s == NULL) { + error("x509key_find_subject: no input data"); + return(NULL); + } + for (; *s && ISSPACE(*s); s++) + {/*skip space*/} + + for (q=keywords; *q; q++) { + len = strlen(*q); + if (strncasecmp(s, *q, len) != 0) continue; + + for (p = s + len; *p && ISSPACE(*p); p++) + {/*skip space*/} + if (!*p) { + error("x509key_find_subject: no data after keyword"); + return(NULL); + } + if (*p == ':' || *p == '=') { + for (p++; *p && ISSPACE(*p); p++) + {/*skip space*/} + if (!*p) { + error("x509key_find_subject: no data after separator"); + return(NULL); + } + } + if (*p == '/' || *p == ',') { + /*skip leading [Relative]DistinguishedName elements separator*/ + for (p++; *p && ISSPACE(*p); p++) + {/*skip space*/} + if (!*p) { + error("x509key_find_subject: no data"); + return(NULL); + } + } + return(p); + } + return(NULL); +}
Wenn es also immer noch ein Problem für Sie ist, müssen Sie wahrscheinlich den Code patchen und / oder an den Autor dieses Codes schreiben, um das Problem zu beheben (wahrscheinlich auf dieser Mailingliste ).