SSL证书申请流程和如何申请Let’sEncrypt免费证书
Let’s Encrypt 是由 Mozilla 发起,诸多 CDN 厂商,浏览器厂商共同支持的免费 SSL 项目,相对于沃什么通免费 SSL 什么的绝对靠谱得多。
其次 Let’s Encrypt 使用一个命令行工具certbot来自动完成 CSR 生成,发起申请,DCV (Domain Control Validation) 验证,获取证书的工作,基本上一行命令就搞定。
以下简要介绍一下证书申请中的一些概念,以及如何申请 Let’s Encrypt 的免费证书。
SSL 证书申请流程
SSL 证书申请流程一般分为以下几步
- 生成私钥和CSR
在整套证书基础设施的所有操作中,私钥的明文都是不能经过网络传输的。所以,第一步用户生成一个证书,私钥保存在自己的电脑上,然后生成 证书签名请求 (CSR, Certificate Signing Request)发送给 CA机构。
生成证书的时候,必须在 通用名 (CN, Common Name)一栏填入待申请域名,这也保证了不同域名的 SSL证书 不能通用。
证书申请的真正含义是,请求一个 CA机构 对你的 CSR 进行签名,CA 机构 签名之后,你生成的这个证书才会受到各大浏览器的信任,否则只能当做自签名的证书,在自己的设备上手动配置信任。
2.发送给 CA
这一步很好理解,就是把上一步生成的 CSR 以各种方式发送给 CA机构,请求签名。
各个 CA机构 不同等级的证书价格也不一样,但在用户看来,证书其实只有两个级别,带 EV认证 和 不带EV认证,也就是带不带绿标,这一点在下面提到。
3.CA机构 验证申请人身份
CA机构 绝对不会来者不拒的,这样随便一个人就可以申请到别人域名的证书了,这样 SSL加密 就没有意义了。
因此 CA机构 在用户购买证书,提交 CSR 之后,会进行域名控制验证 (DCV, Domain Control Validation),验证申请人是否拥有域名控制权。
CA机构 验证申请人身份一般有几个方法:
- Email 验证,CA机构 向待申请域名的某些固定邮箱 (诸如 postmaster@example.com, webmaster@example.com) 发送验证链接,用户点击链接即可进行验证。
- DNS 验证,CA机构 要求申请人在待申请域名的某个随机子域名上添加一条指定的TXT记录,如果申请人添加成功,即通过验证。
- Web 验证,CA机构 要求申请人在待申请域名的 HTTP 服务下,放入一个特定的文件,如果 CA机构 能够访问到这个文件,并且内容和要求的一致,即通过验证。也有一些机构会要求在页面 中加入特定的信息,但是基本的概念是一致的。
如果是带 EV认证 的证书,CA机构 会要求申请人出具法律证明文件,甚至是现场勘验。这也是 EV证书 一般都是天价的原因。
4.发送证书
CA机构 验证完成后,会对用户 CSR 进行签名,并发回申请人,这样申请人就拿到一个受浏览器信任的证书了。
如何申请 Let’s Encrypt 证书
知道域名申请流程之后,就明白 Let’s Encrypt 是如何使用一行命令完整证书申请流程的了。
首先打开https://certbot.eff.org/,按照提示安装 cerbot, 这是 Let’s Encrypt 官方提供的命令行工具。
在典型环境下,假设用户拥有Example Domain这个域名,用户将其指向某台服务器,服务器的反向代理 Nginx 识别Example Domain主机名,然后提供/var/html/www的静态内容。
在这个典型环境下,certbot 的工作流程非常简单,只需一行代码:
certbot certonly --webroot -w /var/html/www -d www.example.com
此命令会执行以下工作:
- certbot调用openssl生成CN=Example Domain的证书,生成 CSR,发送给 Let’s Encrypt CA。
- Let’s Encrypt CA 告知certbot进行 Web DCV,certbot把 Let’s Encrypt CA 要求的文件放入/var/html/www中,假设为abcdeftas.html。
- Let’s Encrypt CA 访问http://www.example.com/abcdeftas.html,如果访问成功且内容和要求的一致,就证明申请人的确拥有域名的控制权,Web DCV 验证成功。
- Let’s Encrypt CA 签名 CSR 并下发证书。
在实际工作中,Nginx 可能需要负担反向代理的工作,Lets Encrypt 的 Web DCV 只会占用网站 .well-known 路径。正确配置 Nginx,比如为 .well-known 路径单独设置静态内容,就可以在保证网站不间断运行的情况下,完成证书的申请工作。
IPSSL证书申请步骤IT1682018-11-2814:04
建设运营网站,需要部署SSL证书,但很多用户需要直接使用IP,其实IP也是可以使用SSL证书的。
第二步 导出证书
每个平台导出方法不一样,我这里以我的为例