- 浏览: 1524394 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (516)
- Java (49)
- Java/Struts 2.0 (25)
- Java/Spring、Spring MVC (11)
- Java/Quartz (3)
- Java/Lucene (6)
- Java/Hibernate (19)
- Java/openJPA (7)
- Java/DWR (7)
- Java/Security、Spring Security/OAuth2 (6)
- Java/Threading (9)
- Java/XML (22)
- java/design pattern (4)
- Android (2)
- JavaScript (46)
- jquery (3)
- DB/MySQL (23)
- DB/Oracle (16)
- PHP (25)
- CSS (20)
- Linux (38)
- C/C++、DLL、Makefile、VC++ (31)
- 正则 (9)
- Eclipse (4)
- 安全、网络等概念 (25)
- 集群 (7)
- 网页 (5)
- 视频\音频 (1)
- HTML (6)
- 计算机数学/算法 (3)
- Virtualbox (1)
- LDAP (2)
- 数据挖掘 (6)
- 工具破解 (1)
- 其他 (13)
- Mail (1)
- 药材 (3)
- 游戏 (2)
- hadoop (13)
- 压力测试 (3)
- 设计模式 (3)
- java/Swing (2)
- 缓存/Memcache (0)
- 缓存/Redis (1)
- OSGI (2)
- OSGI/Gemini (0)
- 文档写作 (0)
- java/Servlet (3)
- MQ/RabbitMQ (2)
- MQ/RocketMQ (0)
- MQ/Kafka (1)
- maven (0)
- SYS/linux (1)
- cache/redis (1)
- DB/Mongodb (2)
- nginx (1)
- postman (1)
- 操作系统/ubuntu (1)
- golang (1)
- dubbo (1)
- 技术管理岗位 (0)
- mybatis-plus (0)
最新评论
-
pgx89112:
大神,请赐我一份这个示例的项目代码吧,万分感谢,1530259 ...
spring的rabbitmq配置 -
string2020:
不使用增强器 怎么弄?
OpenJPA的增强器 -
孟江波:
学习了,楼主,能否提供一份源代码啊,学习一下,十分感谢!!!4 ...
spring的rabbitmq配置 -
eachgray:
...
spring-data-redis配置事务 -
qljoeli:
学习了,楼主,能否提供一份源代码啊,学习一下,十分感谢!!!1 ...
spring的rabbitmq配置
源自:http://www.cnblogs.com/chnking/archive/2009/12/02/872104.html
一、 X.509数字证书的编码
X.509证书的结构是用ASN1(Abstract Syntax Notation One)进行描述数据结构,并使用ASN1语法进行编码。
ASN1采用一个个的数据块来描述整个数据结构,每个数据块都有四个部分组成:
1、数据块数据类型标识(一个字节)
数据类型包括简单类型和结构类型。
简单类型是不能再分解类型,如整型(INTERGER)、比特串(BIT STRING)、字节串(OCTET STRING)、对象标示符(OBJECT IDENTIFIER)、日期型(UTCTime)等。
结构类型是由简单类型和结构类型组合而成的,如顺序类型(SEQUENCE, SEQUENCE OF)、选择类型(CHOICE)、集合类型(SET)等。
l 顺序类型的数据块值由按给定顺序成员成员数据块值按照顺序组成,;
l 选择类型的数据块值由多个成员数据数据块类型中选择一个的数据块值;
l 集合数据块类型由成员数据块类型的一个或多个值构成。
这个标识字节的结构如下:
1.1. Bit8-bit7
用来标示 TAG 类型,共有四种,分别是universal(00)、application(01)、context-specific(10)和private(11)。
这两位为universal(00)时,bit5-bit1的值表示不同的universal的值:
标记(TAG) 对应类型
[UNIVERSAL 1] BOOLEAN [有两个值:false或true]
[UNIVERSAL 2] INTEGER [整型值]
[UNIVERSAL 3] BIT STRING [0位或多位]
[UNIVERSAL 4] OCTET STRING [0字节或多字节]
[UNIVERSAL 5] NULL
[UNIVERSAL 6] OBJECT IDENTIFIER [相应于一个对象的独特标识数字]
[UNIVERSAL 7] OBJECT DESCRIPTOR [一个对象的简称]
[UNIVERSAL 8] EXTERNAL, INSTANCE OF [ASN.1没有定义的数据类型]
[UNIVERSAL 9] REAL [实数值]
[UNIVERSAL 10] ENUMERATED [数值列表,这些数据每个都有独特的标识符,作为ASN.1定义数据类型的一部分]
[UNIVERSAL 12] UTF8String
[UNIVERSAL 13] RELATIVE-OID
[UNIVERSAL 16] SEQUENCE, SEQUENCE OF [有序数列,SEQUENCE里面的每个数值都可以是不同类型的,而SEQUENCE OF里是0个或多个类型相同的数据]
[UNIVERSAL 17] SET, SET OF [无序数列,SET里面的每个数值都可以是不同类型的,而SET OF里是0个或多个类型相同的数据]
[UNIVERSAL 18] NumericString [0-9以及空格]
[UNIVERSAL 19] PrintableString [A-Z、a-z、0-9、空格以及符号'()+,-./:=?]
[UNIVERSAL 20] TeletexString, T61String
[UNIVERSAL 21] VideotexString
[UNIVERSAL 22] IA5String
[UNIVERSAL 23] UTCTime [统一全球时间格式]
[UNIVERSAL 24] GeneralizedTime
[UNIVERSAL 25] GraphicString
[UNIVERSAL 26] VisibleString, ISO646String
[UNIVERSAL 27] GeneralString
[UNIVERSAL 28] UniversalString
[UNIVERSAL 29] CHARACTER STRING
[UNIVERSAL 30] BMPString
[UNIVERSAL 31]... reserved for future use
这两位为context-specific(10)时,bit5-bit1的值表示特殊内容:
[0] –- 表示证书的版本
[1] –- issuerUniqueID,表示证书发行者的唯一id
[2] –- subjectUniqueID,表示证书主体的唯一id
[3] –- 表示证书的扩展字段
1.2. bit6
表示是否为结构类型(1位结构类型);0则表明编码类型是简单类型。
1.3. bit5-bit1
是类型的TAG值。根据bit8-bit7的不同值有不同的含义,具体含义见上面的描述。
如 SEQUENCE 类型数据块,其TAG类型位UNIVERSAL(00),属于结构类型(1),TAG值为16(10000)所以其类型标示字段值为(00110000),即为0x30。
再如,证书扩展字段类型的数据块,TAG类型为(10),属结构类型(1),TAG的值为3(00011),所以其类型标示字段值为(10100011),即为0xA3。
2、数据块长度(1-128个字节)
长度字段,有两种编码格式。
若长度值小于等于127,则用一个字节表示,bit8 = 0, bit7-bit1 存放长度值;
若长度值大于127,则用多个字节表示,可以有2到127个字节。第一个字节的第8位为1,其它低7位给出后面该域使用的字节的数量,从该域第二个字节开始给出数据的长度,高位优先。
还有一种特殊情况,这个字节为0x80,表示数据块长度不定,由数据块结束标识结束数据块。
3、数据块的值
存放数据块的值,具体编码随数据块类型不同而不同。
4、数据块结束标识(可选)
结束标示字段,两个字节(0x0000),只有在长度值为不定时才会出现。
二、 X.509证书的结构
1、X.509证书基本部分
1.1. 版本号.
标识证书的版本(版本1、版本2或是版本3)。
1.2. 序列号
标识证书的唯一整数,由证书颁发者分配的本证书的唯一标识符。
1.3. 签名
用于签证书的算法标识,由对象标识符加上相关的参数组成,用于说明本证书所用的数字签名算法。例如,SHA-1和RSA的对象标识符就用来说明该数字签名是利用RSA对SHA-1杂凑加密。
1.4. 颁发者
证书颁发者的可识别名(DN)。
1.5. 有效期
证书有效期的时间段。本字段由”Not Before”和”Not After”两项组成,它们分别由UTC时间或一般的时间表示(在RFC2459中有详细的时间表示规则)。
1.6. 主体
证书拥有者的可识别名,这个字段必须是非空的,除非你在证书扩展中有别名。
1.7. 主体公钥信息
主体的公钥(以及算法标识符)。
1.8. 颁发者唯一标识符
标识符—证书颁发者的唯一标识符,仅在版本2和版本3中有要求,属于可选项。
1.9. 主体唯一标识符
证书拥有者的唯一标识符,仅在版本2和版本3中有要求,属于可选项。
2、X.509证书扩展部分
可选的标准和专用的扩展(仅在版本2和版本3中使用),扩展部分的元素都有这样的结构:
Extension ::= SEQUENCE {
extnID OBJECT IDENTIFIER,
critical BOOLEAN DEFAULT FALSE,
extnValue OCTET STRING }
extnID:表示一个扩展元素的OID
critical:表示这个扩展元素是否极重要
extnValue:表示这个扩展元素的值,字符串类型。
扩展部分包括:
2.1. 发行者密钥标识符
证书所含密钥的唯一标识符,用来区分同一证书拥有者的多对密钥。
2.2. 密钥使用
一个比特串,指明(限定)证书的公钥可以完成的功能或服务,如:证书签名、数据加密等。
如果某一证书将 KeyUsage 扩展标记为“极重要”,而且设置为“keyCertSign”,则在 SSL 通信期间该证书出现时将被拒绝,因为该证书扩展表示相关私钥应只用于签写证书,而不应该用于 SSL。
2.3. CRL分布点
指明CRL的分布地点。
2.4. 私钥的使用期
指明证书中与公钥相联系的私钥的使用期限,它也有Not Before和Not After组成。若此项不存在时,公私钥的使用期是一样的。
2.5. 证书策略
由对象标识符和限定符组成,这些对象标识符说明证书的颁发和使用策略有关。
2.6. 策略映射
表明两个CA域之间的一个或多个策略对象标识符的等价关系,仅在CA证书里存在。
2.7. 主体别名
指出证书拥有者的别名,如电子邮件地址、IP地址等,别名是和DN绑定在一起的。
2.8. 颁发者别名
指出证书颁发者的别名,如电子邮件地址、IP地址等,但颁发者的DN必须出现在证书的颁发者字段。
2.9. 主体目录属性
指出证书拥有者的一系列属性。可以使用这一项来传递访问控制信息。
三、 X.509证书详细描述
Certificate ::= SEQUENCE {
tbsCertificate TBSCertificate, -- 证书主体
signatureAlgorithm AlgorithmIdentifier, -- 证书签名算法标识
signatureValue BIT STRING --证书签名值,是使用signatureAlgorithm部分指定的签名算法对tbsCertificate证书主题部分签名后的值.
}
TBSCertificate ::= SEQUENCE {
version [0] EXPLICIT Version DEFAULT v1, -- 证书版本号
serialNumber CertificateSerialNumber, -- 证书序列号,对同一CA所颁发的证书,序列号唯一标识证书
signature AlgorithmIdentifier, --证书签名算法标识
issuer Name, --证书发行者名称
validity Validity, --证书有效期
subject Name, --证书主体名称
subjectPublicKeyInfo SubjectPublicKeyInfo,--证书公钥
issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL,
-- 证书发行者ID(可选),只在证书版本2、3中才有
subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL,
-- 证书主体ID(可选),只在证书版本2、3中才有
extensions [3] EXPLICIT Extensions OPTIONAL
-- 证书扩展段(可选),只在证书版本3中才有
}
Version ::= INTEGER { v1(0), v2(1), v3(2) }
CertificateSerialNumber ::= INTEGER
AlgorithmIdentifier ::= SEQUENCE {
algorithm OBJECT IDENTIFIER,
parameters ANY DEFINED BY algorithm OPTIONAL }
parameters:
Dss-Parms ::= SEQUENCE { -- parameters ,DSA(DSS)算法时的parameters, RSA算法没有此参数
p INTEGER,
q INTEGER,
g INTEGER }
signatureValue:
Dss-Sig-Value ::= SEQUENCE { -- sha1DSA签名算法时,签名值
r INTEGER,
s INTEGER }
Name ::= CHOICE {
RDNSequence }
RDNSequence ::= SEQUENCE OF RelativeDistinguishedName
RelativeDistinguishedName ::=
SET OF AttributeTypeAndValue
AttributeTypeAndValue ::= SEQUENCE {
type AttributeType,
value AttributeValue }
AttributeType ::= OBJECT IDENTIFIER
AttributeValue ::= ANY DEFINED BY AttributeType
Validity ::= SEQUENCE {
notBefore Time, -- 证书有效期起始时间
notAfter Time -- 证书有效期终止时间
}
Time ::= CHOICE {
utcTime UTCTime,
generalTime GeneralizedTime }
UniqueIdentifier ::= BIT STRING
SubjectPublicKeyInfo ::= SEQUENCE {
algorithm AlgorithmIdentifier, -- 公钥算法
subjectPublicKey BIT STRING -- 公钥值
}
subjectPublicKey:
RSAPublicKey ::= SEQUENCE { -- RSA算法时的公钥值
modulus INTEGER, -- n
publicExponent INTEGER -- e -- }
Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension
Extension ::= SEQUENCE {
extnID OBJECT IDENTIFIER,
critical BOOLEAN DEFAULT FALSE,
extnValue OCTET STRING }
四、 X.509数字证书实例
这是从RFC 2459 Internet X.509 Public Key Infrastructure标准文档中摘取的两个证书例子。本文在例子的原来基础上加了些注释。
1、DSA证书,CA证书
证书包含699字节,证书版本号为3。
该证书包含以下内容:
(a) 证书序列号是17 (0x11);
(b) 证书使用DSA和SHA-1哈希算法签名;
(c) 证书发行者的名字是OU=nist; O=gov; C=US
(d) 证书主体的名字是OU=nist; O=gov; C=US
(e) 证书的有效期从1997-6-30到 1997-12-31;
(f) 证书包含一个1024 bit DSA 公钥及其参数(三个整数p、q、g);
(g) 证书包含一个使用者密钥标识符(subjectKeyIdentifier)扩展项
(h) 证书是一个CA证书(通过basicConstraints基本扩展项标识)
0000 30 82 02 b7 695: SEQUENCE // Certificate:: SEQUENCE类型(30),数据块长度字节 为2(82),长度为695(02 b7)
0004 30 82 02 77 631: . SEQUENCE // tbsCertificate:: SEQUENCE类型,长度631
0008 a0 03 3: . . [0] // Version:: 特殊内容-证书版本(a0),长度3
0010 02 01 1: . . . INTEGER 2 //整数类型(02),长度1
: 02 // 版本3(2)
0013 02 01 1: . . INTEGER 17 // serialNumber:: 整数类型(02),长度1
: 11 // 证书序列号 17
0016 30 09 9: . . SEQUENCE // signature:: SEQUENCE类型(30),长度9
0018 06 07 7: . . . OID 1.2.840.10040.4.3: dsa-with-sha //signature:: OBJECT IDENTIFIER类型,长度7
: 2a 86 48 ce 38 04 03 // 表示dsa-with-sha算法(见注1)
0027 30 2a 42: . . SEQUENCE // 以下红色的数据块表示issuer信息
0029 31 0b 11: . . . SET
0031 30 09 9: . . . . SEQUENCE
0033 06 03 3: . . . . . OID 2.5.4.6: C
: 55 04 06
0038 13 02 2: . . . . . PrintableString 'US'
: 55 53
0042 31 0c 12: . . . SET
0044 30 0a 10: . . . . SEQUENCE
0046 06 03 3: . . . . . OID 2.5.4.10: O
: 55 04 0a
0051 13 03 3: . . . . . PrintableString 'gov'
: 67 6f 76
0056 31 0d 13: . . . SET
0058 30 0b 11: . . . . SEQUENCE
0060 06 03 3: . . . . . OID 2.5.4.11: OU
: 55 04 0b
0065 13 04 4: . . . . . PrintableString 'nist'
: 6e 69 73 74
0071 30 1e 30: . . SEQUENCE // validity:: SEQUENCE类型(30),长度30
0073 17 0d 13: . . . UTCTime '970630000000Z' // notBefore:: UTCTime类型(23) 长度13
: 39 37 30 36 33 30 30 30 30 30 30 30 5a
0088 17 0d 13: . . . UTCTime '971231000000Z' // notBefore:: UTCTime类型(23) 长度13
: 39 37 31 32 33 31 30 30 30 30 30 30 5a
0103 30 2a 42: . . SEQUENCE // 以下红色的数据块表示subject信息
0105 31 0b 11: . . . SET
0107 30 09 9: . . . . SEQUENCE
0109 06 03 3: . . . . . OID 2.5.4.6: C
: 55 04 06
0114 13 02 2: . . . . . PrintableString 'US'
: 55 53
0118 31 0c 12: . . . SET
0120 30 0a 10: . . . . SEQUENCE
0122 06 03 3: . . . . . OID 2.5.4.10: O
: 55 04 0a
0127 13 03 3: . . . . . PrintableString 'gov'
: 67 6f 76
0132 31 0d 13: . . . SET
0134 30 0b 11: . . . . SEQUENCE
0136 06 03 3: . . . . . OID 2.5.4.11: OU
: 55 04 0b
0141 13 04 4: . . . . . PrintableString 'nist'
: 6e 69 73 74
0147 30 82 01 b4 436: . . SEQUENCE // subjectPublicKeyInfo:: SEQUENCE类型(30), 长度436
0151 30 82 01 29 297: . . . SEQUENCE
0155 06 07 7: . . . . OID 1.2.840.10040.4.1: dsa //algorithm:: OBJECT IDENTIFIER类型,长度7
: 2a 86 48 ce 38 04 01 // 表示DSA算法(见注1)
0164 30 82 01 1c 284: . . . . SEQUENCE // DSA算法的parameters,三个整数 p、q、g
0168 02 81 80 128: . . . . . INTEGER // p参数
: d4 38 02 c5 35 7b d5 0b a1 7e 5d 72 59 63 55 d3
: 45 56 ea e2 25 1a 6b c5 a4 ab aa 0b d4 62 b4 d2
: 21 b1 95 a2 c6 01 c9 c3 fa 01 6f 79 86 83 3d 03
: 61 e1 f1 92 ac bc 03 4e 89 a3 c9 53 4a f7 e2 a6
: 48 cf 42 1e 21 b1 5c 2b 3a 7f ba be 6b 5a f7 0a
: 26 d8 8e 1b eb ec bf 1e 5a 3f 45 c0 bd 31 23 be
: 69 71 a7 c2 90 fe a5 d6 80 b5 24 dc 44 9c eb 4d
: f9 da f0 c8 e8 a2 4c 99 07 5c 8e 35 2b 7d 57 8d
0299 02 14 20: . . . . . INTEGER // q参数
: a7 83 9b f3 bd 2c 20 07 fc 4c e7 e8 9f f3 39 83
: 51 0d dc dd
0321 02 81 80 128: . . . . . INTEGER // g参数
: 0e 3b 46 31 8a 0a 58 86 40 84 e3 a1 22 0d 88 ca
: 90 88 57 64 9f 01 21 e0 15 05 94 24 82 e2 10 90
: d9 e1 4e 10 5c e7 54 6b d4 0c 2b 1b 59 0a a0 b5
: a1 7d b5 07 e3 65 7c ea 90 d8 8e 30 42 e4 85 bb
: ac fa 4e 76 4b 78 0e df 6c e5 a6 e1 bd 59 77 7d
: a6 97 59 c5 29 a7 b3 3f 95 3e 9d f1 59 2d f7 42
: 87 62 3f f1 b8 6f c7 3d 4b b8 8d 74 c4 ca 44 90
: cf 67 db de 14 60 97 4a d1 f7 6d 9e 09 94 c4 0d
0452 03 81 84 132: . . . BIT STRING (0 unused bits) // subjectPublicKey:: 公钥值,BIT STRING类型,长度132字节(好像应该是131字节)
0455 02 81 80 128: . . . . INTEGER // 公钥值,表现为integer类型,128字节,1024位
: aa 98 ea 13 94 a2 db f1 5b 7f 98 2f 78 e7 d8 e3
: b9 71 86 f6 80 2f 40 39 c3 da 3b 4b 13 46 26 ee
: 0d 56 c5 a3 3a 39 b7 7d 33 c2 6b 5c 77 92 f2 55
: 65 90 39 cd 1a 3c 86 e1 32 eb 25 bc 91 c4 ff 80
: 4f 36 61 bd cc e2 61 04 e0 7e 60 13 ca c0 9c dd
: e0 ea 41 de 33 c1 f1 44 a9 bc 71 de cf 59 d4 6e
: da 44 99 3c 21 64 e4 78 54 9d d0 7b ba 4e f5 18
: 4d 5e 39 30 bf e0 d1 f6 f4 83 25 4f 14 aa 71 e1
0587 a3 32 50: . . [3] // extensions:: 特殊内容-证书扩展部分(a3), 长度50
0589 30 30 48: . . . SEQUENCE
0591 30 0f 9: . . . . SEQUENCE // 扩展basicConstraints
0593 06 03 3: . . . . . OID 2.5.29.19: basicConstraints
: 55 1d 13
0598 01 01 1: . . . . . TRUE // true,表示为CA证书
: ff
0601 04 05 5: . . . . . OCTET STRING
: 30 03 01 01 ff
0608 30 1d 29: . . . . SEQUENCE // 扩展 subjectKeyIdentifier
0610 06 03 3: . . . . . OID 2.5.29.14: subjectKeyIdentifier
: 55 1d 0e
0615 04 16 22: . . . . . OCTET STRING //扩展 subjectKeyIdentifier的值
: 04 14 e7 26 c5 54 cd 5b a3 6f 35 68 95 aa d5 ff
: 1c 21 e4 22 75 d6
0639 30 09 9: . SEQUENCE // signatureAlgorithm:: = AlgorithmIdentifier
0641 06 07 7: . . OID 1.2.840.10040.4.3: dsa-with-sha
: 2a 86 48 ce 38 04 03
0650 03 2f 47: . BIT STRING (0 unused bits) // bit串,证书签名值,47字节
0652 30 2c 44: . . SEQUENCE
0654 02 14 20: . . . INTEGER // 签名值,20字节,160bit
: a0 66 c1 76 33 99 13 51 8d 93 64 2f ca 13 73 de
: 79 1a 7d 33
0674 02 14 20: . . . INTEGER // 签名值,20字节,160bit
: 5d 90 f6 ce 92 4a bf 29 11 24 80 28 a6 5a 8e 73
: b6 76 02 68
2、RSA证书,非CA证书
证书包含675字节,证书版本号为3。
该证书包含以下内容:
(a) 证书序列号是256 (0x100);
(b) 证书使用RSA和MD2哈希算法签名;
(c) 证书发行者的名字是OU=Dept. Arquitectura de Computadors; O=Universitat Politecnica de Catalunya; C=ES
(d) 证书主体的名字是CN=Francisco Jordan;OU=Dept. Arquitectura de Computadors; O=Universitat Politecnica de Catalunya; C=ES
(e) 证书的有效期从1996-5-21到 1997-5-21;
(f) 证书包含一个768 bit RSA 公钥;
(g) 证书是一个非CA证书(通过一个基本扩展项标识)
(h) 证书包含证书主体别名、证书发行者别名–都是URLs
(i) 证书包含一个发行者密钥标识符和证书策略扩展,和
(j) 证书包含一个密钥用法的扩展,指定用于数字签名
0000 30 80 : SEQUENCE (size undefined) // Certificate:: SEQUENCE类型(30),数据块长度不定,由00、00作为结束符
0002 30 82 02 40 576: . SEQUENCE // tbsCertificate:: SEQUENCE类型,长度576
0006 a0 03 3: . . [0] // Version:: 特殊内容-证书版本(a0),长度3
0008 02 01 1: . . . INTEGER 2 //整数类型(02),长度1
: 02 // 版本3(2)
0011 02 02 2: . . INTEGER 256 //serialNumber:: 整数类型(02),长度2
: 01 00 // 证书序列号256
0015 30 0d 13: . . SEQUENCE // signature:: SEQUENCE类型(30),长度13
0017 06 09 9: . . . OID 1.2.840.113549.1.1.2: MD2WithRSAEncryption
// signature:: OBJECT IDENTIFIER类型,长度9
: 2a 86 48 86 f7 0d 01 01 02 //MD2WithRSAEncryption算法(见注1)
0028 05 00 0: . . . NULL
0030 30 68 88: . . SEQUENCE // 以下红色的数据块表示issuer信息
0032 31 0b 11: . . . SET
0034 30 09 9: . . . . SEQUENCE
0036 06 03 3: . . . . . OID 2.5.4.6: C
: 55 04 06
0041 13 02 2: . . . . . PrintableString 'ES'
: 45 53
0045 31 2d 45: . . . SET
0047 30 2b 43: . . . . SEQUENCE
0049 06 03 3: . . . . . OID 2.5.4.10: O
: 55 04 0a
0054 13 24 36: . . . . . PrintableString
'Universitat Politecnica de Catalunya'
: 55 6e 69 76 65 72 73 69 74 61 74 20 50 6f 6c 69
: 74 65 63 6e 69 63 61 20 64 65 20 43 61 74 61 6c
: 75 6e 79 61
0092 31 2a 42: . . . SET
0094 30 28 40: . . . . SEQUENCE
0096 06 03 3: . . . . . OID 2.5.4.11: OU
: 55 04 0b
0101 13 21 33: . . . . . PrintableString
'OU=Dept. Arquitectura de Computadors'
: 44 65 70 74 2e 20 41 72 71 75 69 74 65 63 74 75
发表评论
-
客户端用https连接服务器的一点心得
2016-05-11 17:13 534转自:http://dannyyuan.blog.51ct ... -
解决PKIX:unable to find valid certification path to requested target 的问题
2016-05-11 17:11 913转自:http://blog.csdn.net/ ... -
cookie的secure、httponly属性设置
2014-03-04 16:19 17187转载自:http://www.cnblogs ... -
框架注入漏洞
2014-02-27 16:21 73142 详细描述 攻击者有可能注入含有恶 ... -
链接注入漏洞
2014-02-27 16:20 18717详细描述 “链接注入”是修改站点内容的行为,其方式为将外 ... -
XSS跨站脚本攻击在Java开发中防范的方法
2014-02-27 16:14 4206详细描述 跨站脚本攻击(也称为XSS)指利用网站漏洞从用 ... -
XSS跨站脚本攻击在Java开发中防范的方法
2014-02-27 09:48 7776转自:http://hi.baidu.com/hkr_tam ... -
HTTP 1.1状态代码及其含义
2011-10-20 10:16 1472下表显示了常见 ... -
使用X.509数字证书加密解密实务(三)-- 使用RSA证书结合对称加密技术加密长数据
2010-03-03 17:00 2261上一章节讨论了如何 ... -
使用X.509数字证书加密解密实务(二)-- 使用RSA证书加密敏感数据
2010-03-03 16:52 2824源自:http://www.cnblogs.com/chnk ... -
使用X.509数字证书加密解密实务(一)-- 证书的获得和管理
2010-03-03 16:40 3285源自:http://www.cnblogs.com/chnki ... -
CA基本常识:X.509标准
2010-03-03 16:21 4675原文连接: http://www.cnblogs.com ... -
安全认证相关文档
2010-03-02 15:59 1080PKCS#11 中文手册 -
openssl使用手册
2009-08-04 10:28 7407OpenSSL有两种运行模式 ... -
JA-SIG(CAS)学习笔记1
2009-07-15 01:16 1353实验步骤: STEP 1,搭 ... -
公钥系统_数字签名_数字证书工作原理入门 (转)
2009-02-24 07:27 2139公钥系统 / 数字签名 / 数字证书工作原理入 ... -
详解公钥、私钥、数字证书的概念
2009-02-05 15:59 3430http://pepa.iteye.com/blog/2509 ... -
CA系统、证书常识
2009-02-05 15:58 14881.什么是CA CA是Certi ... -
密钥库文件格式(Keystore)和证书文件格式(Certificate)
2009-02-05 15:56 3230密钥库文件格式【Keystore】 格式 : ... -
java 项目的安全学习地址
2009-02-01 16:07 1492java 项目的安全学习地址: http://www.ja-s ...
相关推荐
X.509 数字证书结构和实例 X.509 数字证书是一种常用的数字证书格式,用于身份验证和加密通信。在本文中,我们将详细分析 X.509 数字证书的内部结构和编码方式,以帮助读者更好地理解 X.509 格式。 一、X.509 数字...
X.509是一种由国际电信联盟(ITU)制定的标准,用于定义公钥基础设施(PKI)中的数字证书和证书撤销列表(CRL)。本文将深入探讨如何使用Java语言访问X.509格式证书的不同属性,以及这些属性的具体含义。 ### X.509...
X509 数字证书结构的实例 X509 数字证书结构是使用 ASN.1(Abstract Syntax Notation One)进行描述数据...X.509 数字证书结构的实例可以用于开发各种安全应用程序,例如 SSL/TLS 协议、电子邮件加密、数字签名等。
X.509标准是一种广泛应用于互联网安全通信中的数字证书格式,它通过一种称为ASN.1(Abstract Syntax Notation One)的标准化方法来描述和编码数据结构。这一标准不仅确保了数据的一致性和可读性,还提供了强大的灵活...
课程主要分为五个部分,分别是数字证书的基本结构、描述方法、编码、X.509数字证书结构以及X.509证书的详细描述和实例。 1. **数字证书的基本结构** 数字证书由三个关键组成部分构成:证书内容、签名算法和签名...
X509数字证书是网络安全的重要组成部分,它提供了一种可靠的方式来验证网络上的实体身份,保证了信息的机密性、完整性和不可否认性。理解和掌握X509证书的编解码以及解析过程对于网络安全专业人员来说至关重要,有助...
在给定的内容中,我们可以看到ASN.1在X.509数字证书中的应用。X.509证书是公钥基础设施(PKI)中广泛使用的标准,用于验证一个实体的身份。以下是对内容的详细解释: 1. **SEQUENCE**: ASN.1中的`SEQUENCE`关键字用于...
在IT领域,数字签名和数字证书是网络安全的重要组成部分,它们为数据的完整性和发送者的身份提供了保障。在Java编程环境中,这些概念可以通过Java Cryptography Extension (JCE) 和 Java Secure Socket Extension ...
RFC5280是互联网工程任务组(Internet Engineering Task Force,IETF)网络工作小组(Network Working Group)发布的关于X.509公钥基础设施(Public Key Infrastructure,PKI)中数字证书和证书撤销列表...
在这个话题中,我们会学习到数字证书的基本概念、结构以及它们在SSL/TLS协议、电子邮件安全和代码签名中的应用。 数字证书是一种包含公开密钥及其所有者信息的电子文档,由可信赖的第三方机构(称为证书颁发机构,...
3. **证书处理**:asn1crypto库特别适合处理X.509数字证书,可以用于验证证书链、提取证书信息、以及生成自签名证书。这对于开发与SSL/TLS相关的应用或进行PKI(Public Key Infrastructure)操作非常有用。 4. **...
在生成测试版本的HTTPS SSL数字证书时,我们需要了解以下关键步骤和知识点: 1. **证书结构**:一个SSL证书通常包含发行者的身份、拥有者的身份信息(通常是网站域名)、公钥以及证书的有效期等信息。这些信息经过...
X.509v1证书的基本结构包括以下组件: 1. **序列号**:每个证书都有一个唯一的序列号,由颁发者分配,用于区分同一颁发者的不同证书。 2. **签名算法标识符**:标识用于签署证书的加密算法,例如RSA或DSA。 3. **...
- **PKIX** 工作组隶属于IETF安全领域,主要负责公钥基础设施(PKI)和X.509标准的工作,目标是让X.509标准适应互联网环境下的需求。 #### 九、PKI - **公钥基础设施 (Public Key Infrastructure, PKI)** 是一种基于...
`1.cer`和`2.cer`可能是两个不同的X.509证书实例,用于演示或比较。 `对证书的解析.cpp`文件可能是一个C++程序,实现了读取和解析证书的功能。OpenSSL库是一个强大的安全工具包,包含了处理SSL/TLS协议和加密算法的...
- **X.509数字证书**:包含了公钥、证书主体信息、颁发者信息等,这些信息都用ASN.1编码。 - **GSM/UMTS/LTE**:在移动通信系统中,ASN.1用于定义信令消息的结构。 - ** Diameter**:AAA(认证、授权、计费)协议...
DER是BER的一个严格子集,主要用于X.509数字证书和其他需要唯一编码形式的应用。DER遵循以下原则: 1. 顺序编码:所有元素都按照规定的顺序编码。 2. 不可变长度:长度字段总是表示确切的字节数,不使用可变长度...