Go_crypto_x509标准库源码分析(1)

Go_crypto_x509标准库源码分析(1)_X509证书结构以及各个字段含义
X509证书

X509证书是CA颁发的一种数字证书标准

为什么需要X509证书呢(为什么需要数字证书呢)?

X.509证书、ASN.1以及DER编码格式的关系

ASN.1是一种标记语言,基于这种标记语言可以进行数据表示、编码、传输和解码

DER是一种属于ASN.1的编码格式

X.509证书是一种密码学中的公钥数字证书标准,规定了一个数字证书需要哪些信息,而这些信息的编码格式是可以采用ASN.1中的DER编码格式

X.509证书格式

X.509证书官方文档

X.509证书主要包含三个部分的信息:

  1. 证书的基本信息(TBSCertificate)
  2. 数字签名结果(Signature)
  3. 数字签名的算法类型(SignatureAlgorithm)
type certificate struct {
	Raw                asn1.RawContent 
    //证书的基本信息
	TBSCertificate     tbsCertificate
    //CA签名数字证书的算法标识符
	SignatureAlgorithm pkix.AlgorithmIdentifier
    //根据TBSCertificate通过ASN1.DER编码后的数据用SignatureAlogrithm算法签名得出的数字签名
	SignatureValue     asn1.BitString
}
  1. 证书的基本信息

    //证书的基本信息
    type tbsCertificate struct {
    	Raw                asn1.RawContent
    	//This field describes the version of the encoded certificate.(编码后的证书的版本号)
    	Version            int `asn1:"optional,explicit,default:0,tag:0"`
    	//CA颁发的数字证书的序列号
    	SerialNumber       *big.Int
    	//CA用于签署证书的算法标识符
    	SignatureAlgorithm pkix.AlgorithmIdentifier
    	//签署和颁发该证书的发行人标识符
    	Issuer             asn1.RawValue
    	//证书的有效期
    	Validity           validity
    	//数字证书中存放的信息主题
    	Subject            asn1.RawValue
    	PublicKey          publicKeyInfo
    	
    	UniqueId           asn1.BitString   `asn1:"optional,tag:1"`
    	SubjectUniqueId    asn1.BitString   `asn1:"optional,tag:2"`
    	Extensions         []pkix.Extension `asn1:"optional,explicit,tag:3"`
    }
    
生成X.509证书的过程
  1. 检查一个标准X.509证书需要的三个方面部分(证书的基本信息,签名算法,签名部分)
  2. 然后对X.509证书进行编码获得DER编码格式数据
  3. 然后用CA私钥对DER编码格式数据进行签名
  4. 最后生成X.509数字证书
SignatureAlogrithm常数定义

crypto/x509 x509.go

在这里插入图片描述
根据如上图所示当SignatureAlogrithm=10时,签名算法采用的是ECDSA(椭圆曲线数字签名算法)+底层哈希算法是SHA2-256.

  1. **crypto/x509支持的签名算法具体信息: in x509.go **

在这里插入图片描述

  1. crypto /x509支持的公钥生成算法结构体部分: in x509.go

在这里插入图片描述

当结构体PublicKeyAlgorithm=3时对应公钥生成算法是ECDSA

总结
  1. 在X509包中,对于数字证书的签名算法(ECDSAwithSHA256):ECDSA是用来生成公私钥对且用来数字签名过程,SHA256是用来数字签名过程中对消息计算哈希值

    ​ SignatureAlgorithm=10;PublicKeyAlgorithm=3;

参考文献:

X509证书官方文档

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Blockchain410

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值