证书通常是一个几K的小文件,使用二进制或者一定编码的文本(例如Base64)等保存有关公私钥和相应的信息。

        那么证书里面包含哪些信息呢?

        简单来说有这些信息:

?Version number

证书版本

?Serial number

证书序列号

?Signature algorithm ID

签名方式ID

?Issuer name

签发者

?Validity period

有效期.

?Subject name

主题名,通常是人、组织或者Web/应用服务器等.

?Subject public key information

主题公钥信息.

?Issuer unique identifier

签发者唯一标识.

?Subject unique identifier

主题唯一表示.

?Extensions

扩展,用于存储额外信息,例如密钥用法、别名等等.

?Signed hash of the certificate data

证书数据哈希HASH签名,使用签发这私钥进行加密,可作为数字签名.

当然,最关键的是证书的三要素:

1、信任的颁发者

2、有效期

3、名称一致

否则,证书使用是就会遇到问题:

说说证书——证书构成和常见三要素_第1张图片

         为了避免这种问题,一般有两种方式获取证书:

         1、使用第三方证书。

         所谓第三方证书,就是专门提供证书服务的机构,按年收取证书费用,为用户提供证书。由于这些机构的根CA往往随设备或者设备上的操作系统提供,因此用户无需手动去配置系统信任他们颁发的证书。

         对最终用户,尤其是使用移动设备不方便导入证书的最终用户而言很方便,缺点是有每年的费用。

         2、使用自建CA颁发证书。

         有很多免费的CA系统可以使用,例如Windows Server自带的AD CS (AD证书服务)。可以使用AD或者手动导入CA的证书,作为受信任的证书颁发机构,由此解决验证机构不受信任的问题。

        对最终用户而言,可能需要导入CA证书,存在一定技术难度。好处是不需要付出证书费用。