這幾天在研究 x.509 證書和 der 編碼的解碼資訊。
1. 基本概念
在 tls/ssl 協議中,服務端需要向客戶端提供乙個證書,以證明自己的身份。
這個證書裡面包含了服務端的加密公鑰、一些用於描述自己身份的資訊,以及乙個簽名。
x.509 是現代公鑰證書的格式規範,目前常用。
如果看到這裡不理解什麼是 x.509 證書,請自行補課。
x.509 證書有很多種格式,本文只描述 der 編碼的格式。
2. 證書結構
乙個 x.509 證書,其結構使用 asn.1 語法描述如下:
此處只需隨便看一眼,具體解釋看下文。
certificate ::= sequence
certificateserialnumber ::= integer
validity ::= sequence {
notbefore time,
notafter time
time ::= choice {
utctime utctime,
generaltime generalizedtime
uniqueidentifier ::= bit string
subjectpublickeyinfo ::= sequence {
algorithm algorithmidentifier,
subjectpublickey bit string
extensions ::= sequence size (1..max) of extension
extension ::= sequence {
extnid object identifier,
critical boolean default false,
extnvalue octet string
-- contains the der encoding of an asn.1 value
-- corresponding to the extension type identified
-- by extnid
DER編碼規則詳解
der是ber的子集,它為每乙個asn.1型別定義一種唯一的編碼方案。der在ber的基礎上增加了如下限制 長度小於等於127,必須使用短型長度表示法。長度大於127,必須使用長型長度表示法,並且要盡可能的短。對於簡單的string型別以及在其基礎上隱性標籤生成的型別使用簡單定長表示法。對於結構化型...
ASN1之DER編碼規則
在說der之前先了解乙個概念,資料的序列化。什麼是資料的序列化呢,將高階語言 轉變成二進位製流的過程就是資料的序列化。資料序列化的目的就是物理儲存和網路傳輸。在高階語言中有許多結構化的結構,比如,樹,圖,結構體等,高階語言裡的 最終在網路中都是以二進位製流的形式進行傳輸的,但是對於結構化的資料除了編...
C 編碼規範(1) 命名規則
pascal 大小寫形式 所有單詞第乙個字母大寫,其他字母小寫。camel 大小寫形式 除了第乙個單詞,所有單詞第乙個字母大寫,其他字母小寫。1.類名使用pascal 大小寫形式 public class helloworld 2.方法使用pascal 大小寫形式 public class hell...