这几天在研究 X.509 证书和 DER 编码的解码信息。

1. 基本概念

在 TLS/SSL 协议中,服务端需要向客户端提供一个证书,以证明自己的身份。

这个证书里面包含了服务端的加密公钥、一些用于描述自己身份的信息,以及一个签名。

X.509 是现代公钥证书的格式规范,目前常用。

如果看到这里不理解什么是 X.509 证书,请自行补课。

X.509 证书有很多种格式,本文只描述 DER 编码的格式。

2. 证书结构

一个 X.509 证书,其结构使用 ASN.1 语法描述如下:

此处只需随便看一眼,具体解释看下文。

Certificate ::= SEQUENCE {

tbsCertificate TBSCertificate,

signatureAlgorithm AlgorithmIdentifier,

signatureValue BIT STRING

}

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,

-- If present, version MUST be v2 or v3

subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL,

-- If present, version MUST be v2 or v3

extensions [3] EXPLICIT Extensions OPTIONAL

-- If present, version MUST be v3

}

Version ::= INTEGER { v1(0), v2(1), v3(2) }

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 编码规范理解相关推荐

  1. der解码规则_DER编码简介

    概念: DER是BER的子集,它为每一个ASN.1类型定义一种唯一的编码方案. DER与BER的区别: DER在BER的基础上增加了如下限制: 长度小于等于127,必须使用短型长度表示法. 长度大于1 ...

  2. C#命名规则和编码规范

    1. 用Pascal规则来命名属性.方法.事件和类名 1 2 3 4 5 6 public class HelloWorld { public void SayHello(string name) { ...

  3. 《阿里巴巴JAVA编码规范》阅读理解

    https://github.com/alibaba/p3c/ https://github.com/singgel?tab=repositories 前言 2017 年阿里云栖大会,阿里发布了针对 ...

  4. 【协作MIMO+非规则LDPC】协作MIMO系统上,中继协作解码转发策略和编码协作策略,采用非规则LDPC编码

    1.软件版本 MATLAB2013b 2.本算法理论知识 做非规则LDPC码的以编码协作形式的中继协议,比较以下三种情况下的误码率图和中断概率图: 源节点一个(配置一根天线),中继节点4个(每个节点配 ...

  5. java der pem_JAVA解析各种编码密钥对(DER、PEM、openssh公钥)

    一.DER编码密钥对 先说下DER编码,是因为JCE本身是支持DER编码密钥对的解析的,可以参见PKCS8EncodedKeySpec和X509EncodedKeySpec. DER编码是ASN.1编 ...

  6. 视频编解码和MPEG4编码

    来自 http://blog.csdn.net/dansin/article/details/389149 MPEG-4编解码学习. 1.视频数据编码的办法对数据进行编码的目的前面以前提过,一方面降低 ...

  7. OWASP 安全编码规范 快速参考指南

    原文pdf:http://www.owasp.org.cn/owasp-project/download/OWASP_SCP_Quick_Reference_GuideChinese.pdf 1.序言 ...

  8. 前端基础路线一:HTML编码规范

    HTML编码规范 1 前言 2 代码风格 2.1 缩进与换行 2.2 命名 2.3 标签 2.4 属性 3 通用 3.1 DOCTYPE 3.2 编码 3.3 CSS 和 JavaScript 引入 ...

  9. web项目开发 之 前端规范 --- HTML编码规范

    此文严格按照W3C规范和部分实际项目可读性,浏览器加载,性能等众多属性权衡,做出平时前端编码规范文 档.供广大web工作者参考并实施,对维护和项目扩展升级都能省时省力. 转载请注明出处,JS前端实用开 ...

  10. JavaScript最全编码规范

    转载: JavaScript最全编码规范 类型 ●基本类型:访问基本类型时,应该直接操作类型值 ●string ●number ●boolean ●null ●undefined var foo = ...

最新文章

  1. SqlSessionFactoryBean的构建流程
  2. 英特尔开源版HE-Transformer,对于隐私数据AI终于上手了!
  3. uva 610(割边)
  4. C# NPOCO 轻量级ORM框架(进阶)
  5. hdu4907 水dp 或者set
  6. linux内核引入模块机制好处,linux内核模块的版本检查机制
  7. 【sql】leetcode习题 (共 42 题)
  8. Android允许应用程序使用Http明文网络传输
  9. RHEL6 安装ipvsadm-1.26
  10. leetcode力扣12. 整数转罗马数字
  11. JDBC 连接数据库,包含连接池
  12. 想知道自己的物理内存地址都是如何分配的么?
  13. 容器技术Docker K8s 49 容器镜像服务(ACR)详解-概述
  14. python简单代码示例-python3简单代码示例
  15. 网络流量监控iptraf
  16. Beyond Compare4破解方法
  17. 程序员修炼之道关键点总结和个人感悟
  18. windows什么录屏软件好用,windows屏幕录制软件
  19. impala理论篇之三:impala介绍
  20. 群里的初级工程师求助说,要采集采招数据,必须给他安排上

热门文章

  1. 数据质量管理十步流程
  2. ADW_Launcher
  3. 【Matlab】【碎碎念】 clc、close、close all、clear、clear all等的含义
  4. 薅羊毛 | 揭秘闲鱼方案,一部手机,实现随时随地薅羊毛
  5. WebIM 网页聊天工具
  6. 关于旅游景点主题的HTML网页设计——北京景点 7页(带订单购物车)
  7. 微信小游戏实战--cocos creator实现wordle游戏(二)
  8. 从PCC到MIC(2)
  9. 有趣的数字绕口令,提高孩子记忆力,锻炼出好口才!
  10. ArcGIS10.6基本操作——利用DEM给点赋予高程值