ASN.1分析Alipay证书

2020-4 基于BouncyCastle的ASN.1分析工具设计与实现 Week2

任务步骤

  • 下载ASN.1的查看工具Asn1View.exe

  • 访问支付宝,获取站点证书

  • 导出证书详细信息-复制到文件-DER编码二进制X.509(.CER),在Asn1View.exe中打开

标识符 分隔符
Integer 0x02
Bit String 0x03
OCTET String 0x04
Null 0x05
Object Indentifier 0x06
UTF8 String 0x12
Printable String 0x13
UTC Time 0x17
Sequence 0x30
Set 0x31
Certificate ::= SEQUENCE {
tbsCertificate TBSCertificate,          # 证书
signatureAlgorithm AlgorithmIdentifier, # 签名算法
signature BIT STRING                    # 签名
}
  • 证书信息本身是一个 SEQUENCE,里面由两个 SEQUENCE和一个BIT STRING组成

    • SEQUENCE待签的证书,tbsCertificate=TO BE Signed Certificate
    • SEQUENCE签名算法,就是CA准备采用什么签名算法对tbsCertificate进行签名;
    • BIT STRING签名信息,CA对tbsCertificate通过signatureAlgorithm签名算法签出来的签名信息。
  • RFC3280TBSCertificate的定义如下

TBSCertificate ::= SEQUENCE {
version [0] EXPLICIT Version DEFAULT v1,                # 版本
serialNumber CertificateSerialNumber,                   # 序列号
signature AlgorithmIdentifier,                          # 签名算法
issuer Name,                                            # 颁发者
validity Validity,                                      # 有效期
subject Name,                                           # 主题
subjectPublicKeyInfo SubjectPublicKeyInfo ,             # 主题公钥信息
issuerUniqueID[1] IMPLICIT UniqueIdentifier OPTIONAL,   # 颁发者唯一ID
-- If present, version shall be v2 or v3
subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL, # 主题唯一ID
-- If present, version shall be v2 or v3
extensions [3] EXPLICIT Extensions OPTIONAL              # 扩展
-- If present, version shall be v3
}
  • Version

    • Context[0](第一个)里面就是证书版本信息(默认V1)
    • Version的定义Version ::= INTEGER { v1(0),v2(1),v3(2)
    • ASN1View右面的16进制显示
  • serialNumber

    • serialNumber的定义CertificateSerialNumber ::= INTEGER

猜你喜欢

转载自www.cnblogs.com/SANFENs/p/12687423.html