ATECC508A芯片开发笔记(六):产生CSR以及申请证书(X.509)流程及其内容分析
来源:互联网 发布:netbeans php配置 编辑:程序博客网 时间:2024/05/20 10:51
ATECC508A芯片开发笔记(六):产生CSR以及申请证书(X.509)流程及其内容分析
- 508A产生CSR文件流程
- CSR文件内容分析
- 由CSR签发下来的证书内容分析
一、508A产生CSR文件流程
上节提到,在Provisoin时508A会产生至少一对公私钥,然后使用其公钥产生一个CSR(Certificate Signing Request)文件,
- CSR文件中其实完整包含了该公钥,还包含一些X.509证书格式的必备参数数据,并且利用设备PrivateKey对CSR文件进行签名,附在CSR最后面组成CSR文件。
-- Server在收到CSR文件后,首先会利用其中的设备PublicKey验证CSR签名是否正确,然后根据请求内容补充(颁发)完整的证书,既一个完整的X509格式证书。
完成上述步骤后,Server会将证书发送给Signer进行签名,该过程分为三步:
- (1)Signer对证书TBS(To be signed)部分用摘要算法(例如SHA256,CSR请求中会指明)算一个HASH值(32Byte)
- (2)Server根据CSR指明的非对称加密算法(例如ECCP256)对该Hash值进行加密(这个过程既签名)
- (3)Server将签名后的数据(ECC为64byte)附在证书主体内容后面,同时将证书和签名一起返回给Server。
二、CSR文件内容分析
利用Openssl工具查看产生的CSR文件,如下图:
CSR中可以看出,结合X.509证书格式,一个CSR必须具备Version、Subject以及Attributes。其中Subject中,包含所申请证书的C(Country),O(Organization)以及CN(CommonName)等描述部分。
之后就是Subject - PublicKey部分,会明确PublicKey使用的非对称算法,例如图中为id-ecPubKey,紧接着为Device的公钥,最后附上了ECC曲线的OID,既使用P-256Curve。
再往下,就是证书扩展部分,包括KeyUsage(本例为数字签名)、扩展KeyUsage等等。最后部分就是前面部分,可以看到明确了签名算法为ecdsa,并且用sha256算digest(Server首先会验证该签名,保证其完整性)。
三、由CSR签发下来的证书内容分析
下图为CSR签发下来的证书:(仅仅是测试508A用的Demo证书)
- 证书内容和CSR请求是一一对应的,也都是X.509证书格式规范,只不过Signer签名部分是全新的数据,这也是PKI的主要思想之一。
证书内容解析是根据ASN1格式,并且结合X.509定义的证书内容(例如证书开头都为30 82,后面跟2个字节长度):
多提几句:X.509证书都是ASN1格式的,包括CSR,但用508A生成的CSR不一定是ASN1格式,所以要先转换下格式,发送给Server才能识别。
反过来,如果使用证书数据,例如使用Publickey等数据,用于自己验证签名,也要对其格式进行变换。 (可以用些小工具,如base64转Hex助手,或者代码实现)
欢迎转载,Howie原创作品,本文地址:
http://blog.csdn.net/howiexue/article/details/75268237
谢谢
- ATECC508A芯片开发笔记(六):产生CSR以及申请证书(X.509)流程及其内容分析
- ATECC508A芯片开发笔记(一):初识加密芯片
- ATECC508A芯片开发笔记(五):Provision执行过程及代码分析
- ATECC508A芯片开发笔记(七):实现对数据数字签名(Sign)并验证(Verify)证书签名
- ATECC508A芯片开发笔记(三):获取508A串号、随机数源码及I2C抓包分析
- ATECC508A芯片开发笔记(二):开发准备之 CryptoAuthLib 库简介与移植
- ATECC508A芯片开发笔记(四):自定义配置508功能,规划DataZone数据存储
- ATECC508A芯片开发笔记(八):ECDH算法配置方法、执行过程及实现原理
- 证书申请CSR文件
- 证书申请CSR文件
- 证书申请CSR文件
- CSR蓝牙芯片开发
- iOS开发证书申请流程
- 关于iOS申请CSR证书失败的问题(口令错误、错误代码等)
- iOS应用发布流程(一)------相关app证书的申请、下载以及安装
- ATECC508A加密芯片
- Symbian 开发者证书(Developer ID)简介及其申请流程
- MDM 证书申请流程(vendor及customer)
- Jsoup -- 网络爬虫解析器
- Fzu 2255 过河【Dp】好题!
- iOS开发:面向协议编程与 Cocoa 的邂逅 (上)
- 【机器学习杂货铺】——归纳偏好(暂缺)
- 蓝牙BLE ATT剖析(二)-- PDU
- ATECC508A芯片开发笔记(六):产生CSR以及申请证书(X.509)流程及其内容分析
- 637. Average of Levels in Binary Tree
- mysql in 查询返回的结果不一定按照传进的顺序
- 数据库的隔离级别以及悲观锁和乐观锁详解
- 图像分割汇总
- android netd守护进程机制 --- netd分析
- Java集合——set总结
- Section 2.1 hamming
- Ubuntu 16.04 GTX1060 无法进入图形界面