SSL证书的构成
完整的服务器上使用的SSL证书库一定是包括:CA版本的关于公钥及证书所有者信息的证书部分、服务器自身使用的公钥对应的私钥、为了确定认证关系的证书链。这类的证书格式常用的有PKCS12、JKS,都是以二进制方式存储的。
一般的证书字段如下表
字段 | 值 说明 |
---|---|
版本 | 指定所编码证书的版本号。可能的值 V1、V2、V3 |
序列号 | 包含证书颁发机构 (CA) 分配给证书的一个唯一正整数。一般用十六进制表示。 |
签名算法 | 包含一个对象标识符 (OID),指定 CA 用于对证书进行签名的算法。例如,1.2.840.113549.1.1.5 指定 SHA-1 哈希算法与来自 RSA 实验室的 RSA 加密算法结合使用。 |
签名哈希算法 | 指定签名用的哈希算法,如SHA-1 |
颁发者 | 包含创建和签名证书的 CA 的 X.500 可分辨名称 (DN)。 |
有效期从 | 指定证书生效的时间 |
到 | 指定证书失效的时间 |
使用者 | 指定证书的使用者信息 CN =www.langchao.com OU = langchao O = langchao L = shanghai S = shanghai C = cn |
公钥 | 包含公钥和关联的算法信息。如DSA(1024bit) RSA(2048bit) |
授权密钥标识符 | 标识证书颁发机构 (CA) 公钥,与用于签署证书的 CA 私钥对应。 |
基本约束 | 指定实体是否可用作 CA,如果可以,则指定在证书链中该 CA 下可以存在的从属 CA 的数量。 |
使用者密钥标识符 | 区分证书使用者持有的多个公钥。扩展值一般是密钥的 SHA-1 哈希。 |
指纹算法 | 为证书信息生成摘要的算法 |
指纹 | 使用指纹算法生成的摘要信息,用于保证证书的完整性 |
友好名称 | 证书别名alias指定 |
详细请查看https://msdn.microsoft.com/zh-cn/library/windows/apps/hh464941.aspx
证书链不是存储于证书字段之中,它会在确认证书认证关系时被用到,如果证书链缺失,会导致证书的认证失败。一般在PKCS12及JKS格式的证书中,它的结构是这样的:
一般证书的证书链是大于等于2级的,如果某个证书的证书链为1,你就要确认它是不是由ROOTCA直接签发的或者是要作为根证书使用的了,如果不是则需要单独为他指定证书链。
所以在有的服务器上,配置启用SSL时,它指定的文件是分离的即 包含公钥部分的证书、私钥、证书链。