从 2014 年至今,互联网巨头纷纷致力推动 HTTPS 普及​。作为 HTTPS 的安全基础,SSL 协议发挥了其加密传输和身份认证的特点。基于 SSL 协议衍生的 SSL 证书是其承载的形式,也有着多种多样的形式和差异。

SSL 证书也称为 SSL 服务器证书,SSL 证书遵守 SSL 协议,由受信任的数字证书颁发机构 CA ,在验证身份后颁发,具有身份验证和数据传输加密功能,属于数字证书的一种。

SSL证书分类

从技术角度,SSL证书分 自签名证书CA证书 两种,日常大家所提到的 SSL 证书主要指 CA证书(文中的 SSL证书 默指 CA证书,如涉及到自签名证书内容会标注其全名)。

自签名证书

自签名证书是由创建者自行签署的证书,而不是由受信任的证书机构签发的证书。此类证书普遍存在严重的安全漏洞,极易受到攻击,且通常不受浏览器信任。多数情况下不建议大家使用自签名证书,以免导致存在安全隐患和安全风险,造成损失。

使用自签名证书两个主要的弊端:

  • 用户访问可以被劫持,中间的攻击者能查看到所有发送的数据(失去了加密连接的意义)
  • 自签名证书不能向受信任的证书那样进行撤销

CA证书

CA证书是由受信任的 CA机构 颁发的服务器证书,受信任的CA机构是经过国际标准审计,并加入各大根证书库的 SSL证书 才能成为被国际认可的、发挥加密和认证作用。

按照对域名信息的验证等级进行划分,SSL CA证书可以分为:

  • 域名型证书(DV SSL)
  • 企业型证书(OV SSL)
  • 拓展性证书(EV SSL)

按照证书使用的范围进行划分,又可以分为:

  • 单域名型 SSL 证书(Single Domain SSL Certificate)
  • 多域名型 SSL 证书(SAN-SSL/UCC-SSL)(Multi-domain SSL Certificate)
  • 通配符型 SSL 证书(Wildcard SSL Certificate)(行业俗称“野卡”)

单域名/多域名/通配符 CA证书对比

单域名型SSL证书多域名型SSL证书通配符型SSL证书
特点只保护一个域名。
如申请顶级域名证书,则默认连带保护 www 二级域名
可保护多个不同域名,最多可保护250个域名又叫泛域名SSL证书。
可保护一个域名以及该域名所有下一级域名,不限制下级域名数量
验证等级DV SSL(域名验证)
OV SSL(组织验证)
EV SSL(扩展验证)
DV SSL(域名验证)
OV SSL(组织验证)
EV SSL(扩展验证)
DV SSL(域名验证)
OV SSL(组织验证)

DV / OV / EV 证书对比

类型/区别DV SSL
(Domain Validation)
OV SSL
(Organization Validation)
EV SSL
(Extended Validation)
域名验证DNS / HTTP /
管理员邮箱验证
DNS / HTTP /
管理员邮箱验证
DNS / HTTP /
管理员邮箱验证
组织验证无要求要求验证组织信息要求验证组织信息
合法性调查无要求无要求第三方数据调查
(如邓白氏)
颁发周期几分钟 – 几小时2-3个工作日5-7个工作日
使用年限数月 – 2年数月 – 2年数月 – 2年
绿色安全锁支持浏览器
绿色安全锁标志
支持浏览器
绿色安全锁标志
支持浏览器
绿色安全锁标志
绿色地址栏不支持不支持支持
显示企业名不支持不支持支持
网站签章支持支持支持
申请难度容易需要企业资质较繁琐,难度较高
申请成本
可信度较高
单域名证书可签发可签发可签发
多域名证书可签发可签发可签发
通配符证书可签发可签发不支持

SSL 签发流程

SSL 的签发流程为:生成私钥+CSR >发送给 CA > CA 机构验证申请身份(域名持有+[身份信息])>发送证书
具体流程描述如下:

1、生成私钥和证书签名请求

根据申请域名信息生成私钥和证书签名请求 (CSR, Certificate Signing Request) 并将 CSR 发送给 CA 机构来请求签名。
由于 SSL 证书中用户生成的是私钥,私钥被信任后签发的属于公钥,为保护证书安全,私钥不不应该暴露或在网络上明文传输。因此用户应该通过生成CSR 文件的形式向 CA 提交 SSL 签发申请。

2、CA 机构验证申请人域名控制权

CA 机构会根据提交的 CSR 文件中包含的域名进行域名控制验证 (DCV, Domain Control Validation),用来验证申请人是否拥有域名控制权。一般有以下三种方式:

  • Email 验证
    CA 机构通过向申请签发证书域名管理员邮箱 (诸如 whois 登记邮箱地址 / postmaster@example.com / webmaster@example.com) 发送验证链接,通过点击邮件中的验证链接完成验证。
  • DNS 验证
    CA 机构通过要求在申请签发证书域名的某个随机子域名上添加一条指定的 TXT 记录,正确添加后经由 CA 机构确认 DNS 记录完成验证 。
  • Web 验证
    通过在申请签发证书域名的 HTTP 服务下,放入一个特定的文件(多数为 TXT 文本文件),如果 CA机构 能够正常访问到这个文件且内容与要求的一致,即可完成验证。少数 CA 机构会要求要求网站持有者在网站页面上添加特定内容,而不是添加一个文件,其原理是一样的。

3、CA 机构验证申请人身份(身份信息验证)

OV/EV 类证书往往需要验证企业身份,随其验证的信息等级不同,OV SSL 证书只需要提供信息即可。而 EV SSL 证书对企业信息的真实性要求较高,一般 CA 机构会选择通过信任第三方的形式进行验证。即:企业通过授权或委托第三方机构出具具备法律效应的凭证(如第三方的客户信息系统编码,律师函等),向 CA 机构提交后,经审查确认后完成验证。少数 CA机构可能还会要求到企业的实地进行考察。业界比较常见的第三方机构验证方式有:

  • 通过美国邓白氏公司获取邓白氏码(推荐)
  • 通过委托律师事务所出具单位信息证明(不推荐)

4、发送证书

在通过验证后,CA 机构会向申请邮箱发送邮件通知。这个时候就可以通过 CA 机构平台或者邮件获取对应签发下来的 SSL 证书,并通过 SSL 工具和命令转换成各种需要的格式并部署了。

总结

SSL证书的整个申请过程,其实是请求一个 CA机构 对你生成的 CSR 进行签名,只有在 CA 机构 认可并对你的 CSR 文件签名之后,你生成的这个证书才会受到各大浏览器的信任(加上了来自根服务器的信任签名,从而获得签名后的公钥和签名文件)。否则,你的证书就只能当做自签名的证书,通过在自己的设备上手动配置信任解决证书信任问题。