从 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 文件签名之后,你生成的这个证书才会受到各大浏览器的信任(加上了来自根服务器的信任签名,从而获得签名后的公钥和签名文件)。否则,你的证书就只能当做自签名的证书,通过在自己的设备上手动配置信任解决证书信任问题。