域名SSL证书这个东西, 它是让网站能够去启动HTTPS这样一种加密沟通方式的核心组成部分。它的主要作用在于把从浏览器到服务器之间传输的那些数据进行加密操作。也就是说, 原本可能是没有经过保护的信息, 会被转化成那种别人不容易看懂的状态。

这样做, 主要是为了防止在中间可能存在的某些人去偷听或者是去改动了这些数据内容。下面我们要说的事情, 就是从申请这个环节开始。再到后面的安装环节, 然后再到验证环节这样一个完整的操作流程的说明, 一共是分这三个大的部分来展开讲讲的。

证书类型选择

SSL证书可以按照验证等级的不同, 被划分为三种类型, 分别是DV(域名验证型)、OV(组织验证型)以及EV(扩展验证型)。其中, DV证书的签发速度是最快的, 因为只需要提交域名控制权的证明就可以了, 通常情况下在1至24小时之内就能完成办理。

而OV和EV这两种类型的证书则需要额外提交企业的工商资料, 所以处理周期会稍微长一些, 大概需要3至7个工作日。关于具体的使用场景选择而言, 如果是个人网站、博客或者是测试环境的话, 直接选用DV类型就足够了。

但如果是企业官网、电子商务平台, 还有涉及金融业务的站点, 建议大家最好是选用OV或者EV类型更为稳妥。

申请流程

1. 你去选一个那个签发证书的机构, 比如说像Let's Encrypt这种, 或者DigiCert也行, 再或者Sectigo也可以, 然后就在上面把账号给注册了。

2. 创建那个用于申请证书的单子, 把主要使用的那个域名填进去, 同时呢, 也把和它有关联的子域名也一并添上, 打个比方来讲, 像比如 gname.xin 这样的字符串。

3. 先生成那个叫做证书签名请求的东西, 也就是CSR。在这种情况下, 密钥长度建议设置为2048位来用于RSA加密算法或者是选择P-256这个标准的椭圆曲线格式。

4. 完成域名控制权的验证, DV证书可以通过在DNS里面添加指定的TXT记录这种办法来实现, 又或者可以在HTTP目录下面放置用于验证的文件这样的方式来进行操作。

5. 在完成验证操作并获得通过之后, 由CA来执行证书的签发动作, 然后进行下载工作, 所下载的文件的格式为PEM格式, 该文件包含了证书链以及私钥相关内容。

安装配置

1. 首先, 把证书那个文件也就是名字叫做fullchain.pem的这个东西还有私钥那个文件也就是名字叫做privkey.pem的这个东西都传上去, 传到那个服务器里面去, 找到/etc/ssl/这个路径对应的文件夹。

域名SSL证书怎么装?申请配置全流程一次讲清(图1)

2. 我们可以以Nginx这种软件作为例子, 具体就是在它的server这一段配置区域里面, 来进行相关的设置:

ssl_certificate /etc/ssl/gname.xin/fullchain.pem;

ssl_certificate_key /etc/ssl/gname.xin/privkey.pem;

ssl_protocols TLSv1.2 TLSv1.3;

3. 将HTTP协议下的80端口请求, 进行301类型的重定向操作, 把它转向到HTTPS协议所使用的那个443端口。

4. 你先去执行那个nginx -t的这个动作, 来把语法进行校验, 等到没有报错显示出来的时候, 你再去执行那个nginx -s reload的这一个操作, 以此来让新的配置生效。

5. 用浏览器去访问那个域名, 然后在地址栏那里会看见有一个像锁一样的小图标出来了, 这个情况就是表示那个证书已经成功生效了。

高频报错及处理

证书链不完整: 必须先把PEM文件里面的内容给检查一遍, 看看是不是严格按照了从服务器证书, 再是中间证书, 最后到根证书这么个顺序来拼接在一起的, 如果把它们的排列次序给弄反了, 就会让浏览器弹出提示说这个连接是不受信任的。

域名与证书不匹配: 我们要去检查证书的CN字段还有SAN列表, 看这些内容是不是能够覆盖到我们实际访问的那个域名, 这里需要特别注意, 带www的和不带www的情况, 必须分别把它们列出来。

证书到期: 默认的 DV 证书的有效期时间是 90 天, 大家建议部署 certbot renew 这个定时任务,来实现自动续期的功能, 这样就能避免服务出现中断的情况。

注意事项

证书和域名之间存在着非常紧密的绑定关系, 一旦换了域名, 就必须重新去申请新的证书。子域名(例如 mail.gname.xin)所对应的证书并不能和主域名的证书互相通用, 这就需要在 SAN 名单里明确写出该域名, 或者单独为该子域名签发一份证书。

在生产环境运行的时候, 应该同步启用 HSTS 响应头(即 Strict-Transport-Security), 以此来防止用户被降级到使用明文的 HTTP 协议进行访问。