Tôi đang cố gắng tạo chứng chỉ cho Elasticsearch Searchguard. Một yêu cầu là chứng chỉ phải bao gồm oid:1.2.3.4.5.5
trong SAN. Tôi đang sử dụng GO để tạo ra chứng chỉ đó. Sau khi một số thử nghiệm và lỗi tôi đã tìm ra rằng nếu tôi sử dụng []byte{0x88, 0x05, 0x2A, 0x03, 0x04, 0x05, 0x05}
như Raw ASN.1 byte, điều này biến thành oid:1.2.3.4.5.5
trong SAN. Tôi muốn hiểu cách các byte này đại diện cho giá trị oid:1.2.3.4.5.5
. Tôi đã đọc this, nhưng tôi vẫn còn bối rối. Bạn có thể giúp tôi hiểu cách [] byte này đại diện cho oid:1.2.3.4.5.5
không?Làm cách nào để phân tích cú pháp DER byte?
Trả lời
Chủ yếu là lừa How does ASN.1 encode an object identifier?
Mã hóa các giá trị (X.509 = PKIX) SAN mở rộng được định nghĩa trong rfc5280 như:
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 }
Đối với sự lựa chọn này, octet đầu tiên của bạn 0x88 là giá trị thẻ cho ngữ cảnh cụ thể # 8 (có nghĩa là đã đăng kýID) và octet thứ hai 0x05 là độ dài của giá trị, được mã hóa là 0x2A 0x03 0x04 0x05 0x05. Vì giá trị này là một mã định danh đối tượng, để giải mã nó nhìn vào phần mã hóa dưới OBJECT IDENTIFIER trong tài liệu Kaliski:
Mã hóa BER. Nguyên thủy. Nội dung octet như sau, nơi value1, ..., valueN biểu thị các giá trị số nguyên của các thành phần trong định danh hoàn chỉnh đối tượng:
Octet đầu tiên có giá trị 40 * value1 + value2. (Điều này rõ ràng, vì giá trị 1 được giới hạn ở các giá trị 0, 1 và 2; giá trị 2 là giới hạn trong phạm vi từ 0 đến 39 khi giá trị 1 là 0 hoặc 1; và theo X.208, n luôn là ít nhất 2 .)
Các octet sau, nếu có, mã hóa giá trị3, ..., valuen. Mỗi giá trị được mã hóa cơ sở 128, chữ số quan trọng đầu tiên, với ít nhất là chữ số càng tốt và bit quan trọng nhất của mỗi octet ngoại trừ cuối cùng trong mã hóa giá trị được đặt thành "1."
Octet giá trị đầu tiên 0x2A là số thập phân 42 và 42 = 40 * 1 + 2, do hai thành phần đầu tiên của OID là 1 và 2. Tất cả các octet còn lại không có most- của họ bộ bit quan trọng để mỗi mã hóa một thành phần: 3 4 5 5. OID bao gồm các thành phần 1 2 3 4 5 5 là ký pháp viết tắt thông thường 1.2.3.4.5.5 (nhưng có các ký hiệu tương đương khác như được hiển thị trong Kaliski) .
Ngẫu nhiên, OID đó không hợp lệ vì nó phải thuộc cơ quan thành viên của quốc gia có ISO3166 mã số 3 và không có quốc gia nào như vậy.
- 1. Kết hợp phân tích cú pháp phân tích cú pháp, phân tích cú pháp và phân tích cú pháp rừng
- 2. làm cách nào để phân tích cú pháp tệp dtd
- 3. Làm cách nào để phân tích cú pháp tệp JSON?
- 4. Làm cách nào để phân tích cú pháp logic boolean?
- 5. Làm cách nào để phân tích cú pháp mảng numpy?
- 6. Làm cách nào để phân tích cú pháp URL web?
- 7. Phân tích cú pháp XML Java và bù gốc byte
- 8. Cách phân tích cú pháp JSON được phân tích cú pháp để sử dụng ngoại tuyến
- 9. Trình phân tích cú pháp phân tích cú pháp Haskell để gặp phải [...]
- 10. Phân tích cú pháp không phân tích cú pháp đúng cách ("href") trong IE
- 11. Trình phân tích cú pháp Wiki nào?
- 12. Trình phân tích cú pháp thư Rx.Net
- 13. gcc để phân tích cú pháp mã
- 14. Hàng đợi C# byte hiệu quả để phân tích cú pháp luồng byte cho gói tin nhị phân
- 15. Làm cách nào để phân tích cú pháp Tên chủ đề thay thế từ X509Certificate2?
- 16. Cách phân tích cú pháp JSON (AS3)
- 17. Làm cách nào để xác định ngữ pháp phân tích cú pháp trong Perl 5?
- 18. Cách phân tích cú pháp JSON bằng số làm khóa
- 19. Làm cách nào để phân tích cú pháp macro trong mã C++, sử dụng CLANG làm trình phân tích cú pháp và Python làm ngôn ngữ kịch bản?
- 20. Cách làm: Phân tích cú pháp mục nhập của UninstallString
- 21. Ocaml chuỗi phân tích cú pháp để làm cho cây
- 22. Không thể phân tích cú pháp html sử dụng lxml XPath phân tích cú pháp
- 23. Cách đơn giản để phân tích cú pháp WSDL
- 24. Phân tích cú pháp Ruby: phân tích cú pháp nhiều dòng
- 25. Cách hiệu quả nhất để phân tích cú pháp Xml
- 26. Làm cách nào để sử dụng API phân tích cú pháp của Google Json (Gson) để phân tích cú pháp một số trường động trong json của tôi?
- 27. Làm cách nào để phân tích cú pháp tệp JSON bằng cách sử dụng JSON.net
- 28. Làm cách nào để phân tích cú pháp tệp văn bản bằng cách sử dụng javascript
- 29. Trình tạo trình phân tích cú pháp và trình phân tích cú pháp cho Common Lisp
- 30. Làm cách nào để tải một typelib để phân tích cú pháp trong C#?
Cảm ơn bạn rất nhiều vì đã giải thích @ dave_thompson_085! – codefx