前文《SSL证书里包含的具体信息》最后提到X.509 v3扩展,本篇将作详细解释。
证书扩展存在于X.509 v3版本的SSL证书中,它为证书添加功能和限制提供了可选字段。
有许多扩展文件,本篇将阐述9个最常用的扩展。
- Key Usage
- Extended Key Usage
- Basic Constraints
- Name Constraints
- Subject Key Identifier
- Authority Key Identifier
- Subject Alternative Name
- CRL Distribution Point
- Authority Information Access
- Issuer's Certificate
- OCSP Location
1、Key Usage和Extended Key Usage
两者为证书的密钥(公钥与私钥)设定了用途和限制,
在用途上例如:
- 你是否能用这些Key来加密数据
- 创建对称密钥
- 能否用这些Key来给证书进行签名
- 能否用这些Key来验证签名
- 能否用这些Key来验证CRL(Certificate Revocation List)签名
在限制上例如:
- Key Usage通常被他的用途所限制,比如以上5种用途;
- Extended Key Usage设置了基于协议(Protocol)和角色(Role)的限制,比如能否用这些Key设置IP、能否将这些Key用于email、能否将这些Key用于SSL服务器/客户端
那么,为什么要对密钥进行限制呢?
因为,在有这些限制之前,任何证书可以用在任何地方,这意味着证书一旦泄露,这张证书的密钥就可以用于任何地方,这会导致非常多的故障域名。所以,有了这些限制,一旦证书泄露了,只会在一定的用途和角色上产生故障。(限制了影响面)
2、Basic Constraints
决定了Subject是否是CA还是End-Entity(最终实体,比如freessl.cn,etc),即谁能颁发证书
需要注意的是,CA证书可以给其他证书进行颁发,而End-Entity则不能(比我给freessl.cn申请了一张证书,但这张证书不能给其他网站进行证书颁发)。
3、Name Constraints
名称约束限制了对特定域名的签名,特别是用在企业内部审查(CA)。
假设现在有家公司叫Acme, Inc,它设置了自己的内部审查(CA),那么它将能够为子域名acme.com创建证书,因为它确实拥有这个子域名;但这个CA不能给其他诸如paypal.com、x.com签发证书(这些域名不受它所控)。
4、Subject Key Identifier和Authority Key Identifier
两者是公钥的唯一标识,
Subject Key Identifier用来通过证书追溯密钥,例如证书过期,这时我们需要重新申请一张证书,新的证书会有新的序列号,但续订证书不需要重新创建新的私钥(实际操作中,我们续订一张证书只要用原来的CSR文件,就不需要新的私钥)。
Authority Key Identifier用来识别特定的证书使用哪个特定的密钥来签署的。例如,CA有许多密钥对,CA 在颁发证书时会轮换其密钥,所以我们会拥有一家CA用不同Key签发的不同证书。
我们注意到第二张图所示的Subject Key Identifier和Authority Key Identifier的值是相同的,这是因为这是一张CA自签发的证书(Self-Signed Certificate)
5、Subject Alternative Name(主体替代名称)
- 允许一张证书保护多个域名。
- 以往提到浏览器会将CN(Common Name)与地址栏中的地址进行比对,一张证书对应一个CN。
- 通配符证书(Wildcard Certificate)允许单个域名有多个子域名
- S.A.N允许一张证书去保护多个域名
上图所示子域名都有live.com所保护(live.com是微软的,hotmail也是微软的),这就是S.A.N的作用,保护多个域名
6、CRL Distribution Point(CRL分发点)
CRL = Certificate Revocational List,证书撤销列表
- 它是一张列表,上面记录了特定CA所有撤销的证书
- 由CA进行维护
CRL Distribution Point提供URL去访问这个特定的列表
关于CRL的详细内容将在后续篇章进行介绍
7、Authority Information Access
- 提供CA的信息
- Issuer's Certificate -- 提供下载颁发证书的链接
- OCSP Location -- OCSP响应的标识
- OCSP即Online Certificate Status Protocol,在线证书状态协议
- 对于检查证书撤销是一个更有效的方式
关于OCSP的详细内容也将在后续篇章进行介绍
我们遇到的大部分证书会包含以上大部分内容,当然也会有其他内容,后续将会进行阐述。
参考文献
1、网站:Practical Networking.net: Practical TLS