Ich versuche, cert für Elasticsearch Searchguard zu erstellen. Eine Voraussetzung ist, dass das Zertifikat oid:1.2.3.4.5.5
in SANs enthalten muss. Ich verwende GO, um dieses Zertifikat zu generieren. Nach einigem Versuch und Irrtum habe ich herausgefunden, dass, wenn ich []byte{0x88, 0x05, 0x2A, 0x03, 0x04, 0x05, 0x05}
als Raw ASN.1 Bytes verwende, dies in SANs oid:1.2.3.4.5.5
wird. Ich möchte verstehen, wie diese Bytes den Wert oid:1.2.3.4.5.5
darstellen. Ich habe this gelesen, aber ich bin immer noch verwirrt. Kannst du mir helfen zu verstehen, wie dieses [] Byte oid:1.2.3.4.5.5
darstellt?Wie parsen Sie die Bytes?
Antwort
Meist übertölpeln How does ASN.1 encode an object identifier?
Die Codierung des (X.509 = PKIX) SAN-Erweiterung Wert in rfc5280 ist definiert als:
SubjectAltName ::= GeneralNames
GeneralNames ::= SEQUENCE SIZE (1..MAX) OF GeneralName
GeneralName ::= CHOICE { // tags implicit
otherName [0] AnotherName,
rfc822Name [1] IA5String,
dNSName [2] IA5String,
x400Address [3] ORAddress,
directoryName [4] Name,
ediPartyName [5] EDIPartyName,
uniformResourceIdentifier [6] IA5String,
iPAddress [7] OCTET STRING,
registeredID [8] OBJECT IDENTIFIER }
für diese Wahl, Ihre erste Oktett 0x88 ist der Wert-Tag für kontextspezifische # 8 (dh registrierteID) und Ihr zweites Oktett 0x05 ist die Länge des Wertes, der als 0x2A 0x03 0x04 0x05 0x05 codiert ist.
BER-Codierung: Da dieser Wert eine Objektkennung ist, wird in dem Abschnitt über Codierung unter OBJECT IDENTIFIER im Kaliski Dokument aussehen zu dekodieren. Primitiv. Inhalt Bytes sind wie folgt, wobei Wert1, ..., valueN die ganzzahligen Werte der Komponenten in der vollständige Objektkennung bezeichnen:
Das erste Oktett Wert 40 * Wert1 + Wert2 hat. (Dies ist unzweideutig, da Wert1 auf Werte 0, 1 und 2 begrenzt ist; Wert2 ist begrenzt auf den Bereich 0 bis 39, wenn Wert1 0 oder 1 ist; und gemäß X.208 ist n immer mindestens 2 .)
Die folgenden Oktette, falls vorhanden, kodieren Wert3, ..., Wert. Jeder Wert ist die codierte Basis 128, die höchstwertige Stelle zuerst, mit so wenig Ziffern wie möglich, und das höchstwertige Bit jedes Oktetts außer der letzte in der Codierung des Wertes ist auf "1" gesetzt.
Der erste Wert Oktett 0x2A dezimal 42 und 42 = 40 * 1 + 2, so dass die ersten beiden Komponenten der OID wird, sind 1 und 2. Alle verbleibenden Oktette müssen nicht ihre Meist signifikantes Bit gesetzt, so dass sie jeweils eine Komponente kodieren: 3 4 5 5. Die OID bestehend aus den Komponenten 1 2 3 4 5 5 ist in der üblichen Kurzschreibweise 1.2.3.4.5.5 (es gibt jedoch andere äquivalente Schreibweisen wie in Kaliski gezeigt) .
Übrigens ist diese OID ungültig, weil sie unter dem Mitgliedsland des Landes mit ISO3166 numerischen Code 3 sein müsste, und es gibt kein solches Land.
- 1. Parsen Bytes (C Windows)
- 2. Parsen von zwei Bytes vom Array zu einem uint16_t?
- 3. Entfernen Sie die ersten 16 Bytes?
- 4. Lesen Sie mehrere Bytes, springen Sie über N Bytes und lesen Sie dann mehrere Bytes erneut. Wie?
- 5. Wie finden Sie die Anzahl der Bytes von Python-Variablen
- 6. Wie parsen Sie die alternativen Subjektnamen von einem X509Certificate2?
- 7. Wie parsen Sie Beziehungen in MWS GetMatchingProduct?
- 8. Wie parsen Sie diesen JSON in Python?
- 9. Wie parsen Sie mehrstufige "Knoten" im Text?
- 10. Wie parsen Sie XML in JSON Array?
- 11. Wie bekomme ich die genauen Bytes?
- 12. Wie funktioniert die Adressierung von Bytes?
- 13. JSON Parsen, die von Artikel
- 14. Ich konvertiere Zeichenkette in Bytes mit Binär-Reader, wie die Bytes zurück in die gleiche Zeichenfolge
- 15. Berechnen Sie die Größe in Bytes eines Swift String
- 16. Erhalten Sie die Anzahl der empfangenen Bytes node.js
- 17. Betrachten Sie die Bytes/Bits einer Variablen in C
- 18. Wie Bytes float zeigen
- 19. Wie Bytes einfach
- 20. Wie NSString Bytes
- 21. Manipulieren Bytes wie Java in PHP
- 22. Parsen Sie die JSON-Zeichenfolge ohne Anführungszeichen in JSON
- 23. Wie JSONArray Android parsen
- 24. Warum sind die Bytes pro Byte mehr als die Bytes pro Pixel mal die Breite?
- 25. So parsen Sie die XML-Antwort eines URI in ansible
- 26. Wie Parsen mit SAX
- 27. Wie finden Sie, wie viele Bytes in Swift NSURLSession lesen?
- 28. Wie Bildgröße (Bytes) mit PIL
- 29. Scrapy: Begrenzen Sie die Anzahl der Anfrage oder Anfrage Bytes
- 30. Holen Sie die Menge der Bytes gelesen von javax.xml.stream.XMLStreamReader
Vielen Dank für die Erklärung @ dave_thompson_085! – codefx