2017-04-04 2 views
1

Ich verwende Zertifikat mit dem BetreffWarum wurde der Zertifikats-Subjektparameter S von ST auf ST umgestellt?

CN = operator-1505 
O = Test org 
L = Moscow 
S = Moscow 
C = RU 

Aber wenn ich versuche, dieses Zertifikat in meinem Servlet zu erhalten:

@Override 
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
     X509Certificate[] certificates = (X509Certificate[]) req.getAttribute("javax.servlet.request.X509Certificate"); 
     if (certificates != null && certificates.length == 1) { 
      X509Certificate certificate = certificates[0]; 
      authenticate(certificate, req, resp); 
     } 
    } 

Gegenstand in certificate Variable ist:

CN=operator-1505, O=Test org, L=Moscow, ST=Moscow, C=RU 

Warum hat der Steg den S-Parameter in ST umgewandelt?

Antwort

2

Die S (oder ST) ist nicht wirklich im Zertifikat. Was es enthält, ist der Object Identifier (OID) 2.5.4.8.

OpenSSL verwendet a snarky comment zu sagen, dass eine autoritative Antwort für die kurze Form dieser OID "ST" ist, aber dass Microsoft "S" verwendet.

Es ist wahrscheinlich der Fall, dass zwei verschiedene RFCs die gleiche OID mit verschiedenen Kurzformen referenzierten, und jede Bibliothek endete mit einer eigenen Antwort darauf, was für diesen bestimmten Wert zu verwenden ist.

Wenn Sie den Namen mit OID Werte drucken können, die sich über Umgebungen stabil sein sollte, aber ansonsten kann man nur mit einer Art und Weise auf S= oder ST= übereinstimmen müssen kommen.

bearbeiten: Ich bin beachten amüsiert, dass ITU-T X.520 (2012/10) sagt, dass "ST" ist die richtige Antwort, während S mit = als Beispiel:

6.3.3 Staat oder Provinzname

Der Attributtyp Staat oder Provinzname gibt einen Bundesstaat oder eine Provinz an. Wenn es als eine Komponente eines Verzeichnisnamens verwendet wird, identifiziert es eine geographische Unterteilung, in der sich das benannte Objekt physisch befindet oder mit der es in einer anderen wichtigen Weise assoziiert ist.

Ein Attributwert für Staat oder Provinz-Name ist eine Zeichenfolge, zB S = "Ohio"

stateOrProvinceName ATTRIBUTE ::= { 
    SUBTYPE OF name 
    WITH SYNTAX UnboundedDirectoryString 
    LDAP-SYNTAX directoryString.&id 
    LDAP-NAME {"st"} 
    ID id-at-stateOrProvinceName } 

(Hervorhebung von mir, und leider kann ich nicht die "LDAP- haben NAME {"st"} "beide hervorgehoben und Leerzeichen-Erhaltung"

Verwandte Themen