ssl知识大全

在前面的文章中,我们分析了SSL/TLS的一些基本概念和为什么他们安全,尤其提到了公钥和私钥的概念,还有一个很重要的文件,就是CA证书,关于CA证书的官方解释,可以参考百科的解释,这里我们可以简单的认为,CA证书是一个网站的 二维码,这个二维码包括了服务器的一些信息,比如服务器所在的组织、支持的加密算法,还有更重要的公钥信息。

X.509

我们在使用mbedtls时,会发现有X.509的名称,在其他地方也会遇到这个概念,这里我们只做通俗的解释:证书是有专门的认证机构颁发的,所以证书的格式有n多种是,而X.509是一种事实上的证书标准,很多应用程序都支持x.509标准规范。
了解更多x509证书知识

示例证书

我们看到的证书,一般是个文件,名字为 xxxx.crt或xxx.pem,这里我们以阿里云IOT平台SDK中给示例程序使用的 证书举例,直接查看证书内容,如下:

很显然,除了发现字符对的很整齐外,我们是一脸懵逼,完全就是天书,一堆乱码,那么如何解析这个证书内容呢? 前面讲到证书都是有标准格式的(X.509),这个证书是对外发布的,包含公钥的,所以就不存在保密而言,所以我们可以通过 生成证书的 openss 工具反向查看证书,命令如下:
如何把crt转化成pem格式
openssl x509 -in ali_crt.pem -inform pem -noout -text
1
解析后的内容如下:

ubuntu@VM-0-17-ubuntu:/opt/ssl$ openssl x509 -in ali_crt.pem -inform pem -noout -text
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
04:00:00:00:00:01:15:4b:5a:c3:94
Signature Algorithm: sha1WithRSAEncryption
Issuer: C = BE, O = GlobalSign nv-sa, OU = Root CA, CN = GlobalSign Root CA
Validity
Not Before: Sep 1 12:00:00 1998 GMT
Not After : Jan 28 12:00:00 2028 GMT
Subject: C = BE, O = GlobalSign nv-sa, OU = Root CA, CN = GlobalSign Root CA
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public-Key: (2048 bit)
Modulus:
00:da:0e:e6:99:8d:ce:a3:e3:4f:8a:7e:fb:f1:8b:
83:25:6b:ea:48:1f:f1:2a:b0:b9:95:11:04:bd:f0:
63:d1:e2:67:66:cf:1c:dd:cf:1b:48:2b:ee:8d:89:
8e:9a:af:29:80:65🆎e9:c7:2d:12:cb🆎1c:4c:
70:07:a1:3d:0a:30💿15:8d:4f:f8:dd:d4:8c:50:
15:1c:ef:50:ee:c4:2e:f7:fc:e9:52:f2:91:7d:e0:
6d:d5:35:30:8e:5e:43:73:f2:41:e9:d5:6a:e3:b2:
89:3a:56:39:38:6f:06:3c:88:69:5b:2a:4d:c5:a7:
54:b8:6c:89:cc:9b:f9:3c:ca:e5:fd:89:f5:12:3c:
92:78:96:d6:dc:74:6e:93:44:61:d1:8d:c7:46:b2:
75:0e:86:e8:19:8a:d5:6d:6c:d5:78:16:95:a2:e9:
c8:0a:38:eb:f2:24:13:4f:73:54:93:13:85:3a:1b:
bc:1e:34:b5:8b:05:8c:b9:77:8b:b1:db:1f:20:91:
ab:09:53:6e:90:ce:7b:37:74:b9:70:47:91:22:51:
63:16:79:ae:b1:ae:41:26:08:c8:19:2b:d1:46:aa:
48:d6:64:2a:d7:83:34:ff:2c:2a:c1:6c:19:43:4a:
07:85:e7:d3:7c:f6:21:68:ef:ea:f2:52:9f:7f:93:
90:cf
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Key Usage: critical
Certificate Sign, CRL Sign
X509v3 Basic Constraints: critical
CA:TRUE
X509v3 Subject Key Identifier:
60:7B:66:1A:45:0D:97:CA:89:50:2F:7D:04:CD:34:A8:FF:FC:FD:4B
Signature Algorithm: sha1WithRSAEncryption
d6:73:e7:7c:4f:76:d0:8d:bf:ec:ba:a2:be:34:c5:28:32:b5:
7c:fc:6c:9c:2c:2b:bd:09:9e:53:bf:6b:5e:aa:11:48:b6:e5:
08:a3:b3:ca:3d:61:4d:d3:46:09:b3:3e:c3:a0:e3:63:55:1b:
f2:ba:ef:ad:39:e1:43:b9:38:a3:e6:2f:8a:26:3b:ef:a0:50:
56:f9:c6:0a:fd:38💿c4:0b:70:51:94:97:98:04:df:c3:5f:
94:d5:15:c9:14:41:9c:c4:5d:75:64:15:0d:ff:55:30:ec:86:
8f:ff:0d:ef:2c:b9:63:46:f6:aa:fc:df:bc:69:fd:2e:12:48:
64:9a:e0:95:f0:a6:ef:29:8f:01:b1:15:b5:0c:1d:a5:fe:69:
2c:69:24:78:1e:b3:a7:1c:71:62:ee:ca:c8:97:ac:17:5d:8a:
c2:f8:47:86:6e:2a:c4:56:31:95:d0:67:89:85:2b:f9:6c:a6:
5d:46:9d:0c:aa:82:e4:99:51:dd:70:b7:db:56:3d:61:e4:6a:
e1:5c:d6:f6:fe:3d🇩🇪41:cc:07:ae:63:52:bf:53:53:f4:2b:
e9:c7:fd:b6:f7:82:5f:85:d2:41:18:db:81:b3:04:1c:c5:1f:
a4:80:6f:15:20:c9🇩🇪0c:88:0a:1d:d6:66:55:e2:fc:48:c9:
29:26:69:e0
如何查看证书的内容

证书规范

我们就以上述解析后的证书为例,介绍一下证书包含的内容:

  • 版本号(Version Number): 规范的版本号,目前版本为3, 值为0x02 序列号(Serial Number):
  • 由发证机关分配的卫衣序列号,最大不超过20个字节,本例中为:04:00:00:00:00:01:15:4b:5a:c3:9
  • 签名算法(Signature Algorithm): 数字证书锁采用的算法,本例中使用的为:sha1WithRSAEncrypti
  • 颁发者(Issuer): 发证单位的标识信息,可以理解为发证单位的地址、名称等其他信息,这里有一些简称: CN : country Name ST : state or provice name L : locality name O: organization name CN: common name, 这里CN是最重要的一个标识,代表了发证机关的 名称,后面会介绍 有效期(Validity
  • 证书的有效期限,包括起止时间 主题(Subject): 证书拥有者的标识信息(Distinguished Name),与Issuer相似。
  • 公钥信息(SubJect Public Key Info): 所保护的公钥相关的信息: 公钥算法 (Public Key
    Algorithm)公钥采用的算法; 主体公钥(Subject Unique Identifier):公钥的内容。
    颁发者唯一号(Issuer Unique Identifier): 代表颁发者的唯一信息,仅2、3版本支持,可选;
    主体唯一号(Subject Unique Identifier): 代表拥有证书实体的唯一信息,仅2,3版本支持,可选
    扩展(Extensions,可选): 可选的一些扩展。中可能包括: Subject Key
    Identifier:实体的秘钥标识符,区分实体的多对秘钥; Basic Constraints:一指明是否属于CA; Authority
    Key Identifier:证书颁发者的公钥标识符; CRL Distribution Points: 撤销文件的颁发地址;

Key Usage:证书的用途或功能信息。
此外,证书的颁发者还需要对证书内容利用自己的私钥添加签名, 以防止别人对证书的内容进行篡改。
openssl rsa keys/

Validity: 证书有效期,在调试的时候,验证证书中,会验证机器时间是否在证书有效期内,这个容易忽略,毕竟在一些嵌入式机器中,系统时钟不太重要,所以可能不是真实的时钟,这个时候,就会造成证书验证失败。
如何验证证书过期

参考文章:
ssl安全证书知识
convert to PEM
Check SSL Certificate Chain Order with Openssl
Check SSL certificate
two way ssl authentication
create ssl certificate

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值