首页 > 其他分享 >数字证书编码ASN.1

数字证书编码ASN.1

时间:2023-04-11 22:57:36浏览次数:31  
标签:x32 编码 x30 CN SEQUENCE ASN.1 数字证书

一、任务详情
参考附件中图书p223 中13.2的实验指导,完成DER编码
序列号=1174(0x0496),证书签发者 DN="CN=Virtual CA,C=CN",证书持有者DN="CN=你的名字拼音, OU=Person,C=CN",证书有效期=20200222000000-20220222000000。
用echo -n -e "编码" > 你的学号.der中,用OpenSSL asn1parse 分析编码的正确性
提交编码过程文档
二、查看姓名、学号的16进制ASCII码
echo -n "Guo Tao" | od -tc -tx1
echo -n "20201205" | od -tc -tx1
47 75 6f 20 54 61 6f
32 30 32 30 31 32 30 35

三、ASN.1描述与实例
1.TBSCertificate 的 ASN.1描述与实例
TBSCertificate格式用ASN.1描述如下:
TBSCertificate :=SEQUENCE {
version
[0] EXPLICIT Version DEFAULT v1,
serialNumber
CertificateSerialNumber,
signature
Algorithmldentifier,
issuer
Name,
validity
Validity,
subject
Name,
subjectPublicKeyInfo SubjectPublicKeyInfo,
issuerUniqueID[1] IMPLICIT Uniqueldentifier OPTIONAL,
-- If present, version MUST be v2 or v3

subjectUniqueID [2] IMPLICIT Uniqueldentifier OPTIONAL,
-- If present, version MUST be v2 or v3
extensions[3]EXPLICIT Extensions OPTIONAL
-- If present, version MUST be v3
}
Extensions ::=SEQUENCE SIZE (1..MAX) OF ExtensionTBSCertificate 中各项内容具体值如表13-3所示。

TBSCertificate 值
version 02
serialNumber 04 96
signature sha 1 WithRSAEncryption ( 1.2.840.113549.1.1.5)
issuer “CN=Virtual CA,C=CN”
validity notBefore=20200222000000、notAfter=20220222000000
subject “CN=chenshaoqing,OU=Person,C=CN”
subjectPublicKeyInfo 空
issuerUniquelD subjectUniquelD 空
extensions 包含6个扩展项(Extension ): basicContraints、subjectKeyldentifier、keyUsage、extKeyUsage,netscapeCertType、authorityKeyIdentifier
2.Extension的ASN.1描述与实例Extension格式用ASN.1描述如下:
Extension :=SEQUENCE {
extnID
OBJECT IDENTIFIER,
critical
BOOLEAN DEFAULT FALSE,
extnValue
OCTET STRING }
Extension各扩展项值如表13-4所示。

3.Certificate 的ASN.1描述与实例Certificate格式用ASN.1描述如下:
Certificate ::=SEQUENCE {
tbsCertificate
TBSCertificate,
signatureAlgorithm
AlgorithmIdentifier,
signature Value
BIT STRING }
Certificate中各项内容的具体值如表13-5所示。

四、DER编码过程
(一)对Extension进行DER编码
各扩展项具体内容用ASN.1描述如下:
BasicConstraints ::=SEQUENCE{
cA
BOOLEAN DEFAULT FALSE,
pathLenConstraint
INTEGER (O..MAX)OPTIONAL}
SubjectKeyIdentifier ::= Keyldentifier
(KeyIdentifier ::= OCTET STRING)KeyUsage ::= BIT STRING
ExtKeyUsageSyntax ::= SEQUENCE SIZE (1..MAX)OF KeyPurposeld

(KeyPurposeld ::= OBJECT IDENTIFIER)NetscapeCertType ::= BIT STRING
AuthorityKeyldentifier ::=SEQUENCE{
keyIdentifier
[O] KeyIdentifier
OPTIONAL,
authorityCertIssuer
[1]GeneralNames
OPTIONAL,
authorityCertSerialNumber [2] CertificateSerialNumber OPTIONAL }(KeyIdentifier ::= OCTET STRING)
Extension为 SEQUENCE结构类型,不同扩展项DER编码值包含在OCTET STRING类型extnValue中,编码规则采用结构类型定长模式。各扩展项DER编码值用括号分隔。其中,对于BIT STRING类型,编码后第1个字节表示填充位数或未使用位数。

(二)对TBSCertificate进行DER编码
验证:openssl asn1parse -inform der -in ./20201205.der

1.序列号1174(0x0496)
echo -n -e "\xA0\x03\x02\x01\x02\x02\x02\x04\x96\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x05\x05\x00" > 20201205.der

2.证书签发者DN="CN=Virtual CA
echo -n -e "\x30\x22\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x4E\x31\x13\x30\x11\x06\x03\x55\x04\x03\x13\x0A\x56\x69\x72\x74\x75\x61\x6C\x20\x43\x41" >> 20201205.der

3.证书有效期=20200222000000-20220222000000
echo -n -e "\x17\x0D\x32\x30\x32\x30\x30\x32\x32\x32\x30\x30\x30\x30\x5A\x17\x0D\x32\x30\x32\x32\x30\x32\x32\x32\x30\x30\x30\x30\x5A" >> 20201205.der

4.证书持有者DN=CN=Guo Tao, OU=Person
echo -n -e "\x30\x33\x31\x0b\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x4e\x31\x11\x30\x0f\x06\x03\x55\x04\x0a\x13\x08\x32\x30\x32\x30\x31\x32\x31\x32\x31\x11\x30\x0f\x06\x03\x55\x04\x03\x13\x08\x59\x61\x6e\x67\x43\x68\x65\x6e\x67\x79\x75" >> 20201215.der

标签:x32,编码,x30,CN,SEQUENCE,ASN.1,数字证书
From: https://www.cnblogs.com/gtgtgt/p/17308182.html

相关文章

  • 数字证书编码ASN.1
    参考附件中图书p223中13.2的实验指导,完成DER编码序列号=1174(0x0496),证书签发者DN="CN=VirtualCA,C=CN",证书持有者DN="CN=你的名字拼音,OU=Person,C=CN",证书有效期=20200222000000-20220222000000。用echo-n-e"编码">你的学号.der中,用OpenSSLasn1parse分析编码的正确性提......
  • ASN.1 基础测试
    1参考https://www.cnblogs.com/rocedu/p/14891816.html#echo打印字符串和变量值2十六进制数:30030201AA,写入文件1.der,用od查看内容,用asn1view或opensslasn1pars命令查看内容,提交截图3十六进制数:3013020105160e416e79626f64792074686572653f,写......
  • 哈夫曼编码
    基本术语:路径和路径长度:在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。通路中分支的数目称为路径长度。若规定根结点的层数为1,则从根结点    到第L层结点的路径长度为L-1。结点的权及带权路径长度:若将树......
  • 字符转码编码
    importrandomfromstringimportlowerchangdi_list=[]defget_changdi():   path="changdi.txt"   txt=open(path,"r")   #txt=open(path,"r",encoding="utf-8-sig")   forlineintxt.readlines():       line=l......
  • 一个实用的编码技巧,让我免去了数小时的烦恼
    我讨厌重复,卑微的任务是我的宿敌。在我职业生涯的早期,我听到了一条建议,从那时起我就节省了数小时的精力……将你反复做的事情自动化,无论多小。小的时间吸盘加起来。一个例子我有几个目录,我在工作时会反复访问这些目录。要在命令行中更改为不同的文件夹,就像cd../accounts那......
  • v6-根据营销部获取客户经理,在根据客户经理获取客户编码
     1.设置营销部的权限,获取营销部(后端)  2.在前端拿取营销部,根据帮助框再去分别去获取客户经理以及客户编码    ......
  • 事先在当前目录下准备好一个 test.txt 的文本文件,要求该文本文件是使用 GBK 编码的多
      利用字节流+桥转换读入这个文本文件,按照行的顺序,以UTF-8编码方式,写到test2.txt文件中。例:test2.txtpackageio.homework;importjava.io.*;publicclassq21{publicstaticvoidmain(String[]args){try(InputStreamis=newFileInputStream(......
  • 21天掌握Python 3/21 编码
    如果输出中文字符 "你好,世界" Python有可能会碰到中文编码问题。Python文件中如果未指定编码,在执行过程会出现报错:#!/usr/bin/pythonprint("你好,世界")以上程序执行输出结果为:File"test.py",line2SyntaxError:Non-ASCIIcharacter'\xe4'infiletest.pyonline2,bu......
  • delphi中Base64编码转成PDF文件
    Base64编码转成PDF文件  PDF文件转成Base64编码:首先,将PDF文件加载到MemoryStream中:varms:TMemoryStream;beginms:=TMemoryStream.Create;tryms.LoadFromFile('file.pdf');然后,使用TIdEncoderMIME将TMemoryStream转换为Base64编码的字符串:varencoder:TIdEncoderMIME;base......
  • 高通正式开源 aptX 和 aptX HD 编码器
    导读蓝牙音频的传输质量在过去这些年有了非常显著的进步,尤其是各大手机厂商开始陆续取消耳机接口,蓝牙音频的发展速度更是加快了不少,用户从一开始只能听个响到现在用蓝牙也可以听无损。说到音频编解码,目前市场上采用比较广泛的应该是SBC和AAC,还有高通主导的aptX、aptX......