核心结论
对于那些高权重的域名, 比方说那些已经注册了很多年的老牌 .com 和 .net 域名, 或者是像 gname.xin 这样早就积累了超多外链还有搜索引擎收录的域名, 给它们弄成 HTTPS, 核心路子大概就是这几步走, 第一步得选个靠谱的 CA 机构来签发证书, 第二步呢, 是让服务器那边把证书给部署好, 第三步就得配置上那种强制性的 301 跳转还有 HSTS, 最后一步就是要去验证整个链条里面有没有那些不安全的混合内容, 反正这一套流程通下来, 通常花个一天到两天时间就能搞定了。
1. CA机构: 大家要优先去选择Let's Encrypt, 这个证书是免费的, 有效期只有90天, 它支持自动续期。也可以选择DigiCert或者Sectigo, 这两个是付费的, 有效期能达到1年, 有的甚至能到3年。
如果你的域名权重比较高, 建议选用DV证书或者是OV证书。要是业务的类型涉及到金融交易, 那就要选EV证书了, 这样子能够增强用户的信任感。
2. 域名匹配这个操作, 需要依据你站点的架构, 去选择是单域名证书, 还是通配符证书, 或者是多域名(SAN)证书。如果站点里面包含了多个子域名的话, 使用通配符证书就可以一次把这些问题全都覆盖掉。比如说 *.gname.xin 这种情况, 就是一个很好的例子。
3. 密钥长度说的是, 现在大家的底线标准都得是2048位的RSA或者P-256的ECC, 千万不建议用低于这个数值的东西。
部署步骤(以Nginx为例)
1. 把证书文件, 也就是那些后缀为 .crt 或者 .pem 的文件, 再加上私钥文件高权重域名HTTPS配置指南,其后缀是 .key, 这些东西统统都上传到服务器的 /etc/ssl/ 这个目录里面去。
2. 需要对那个用来管理网站的Nginx配置文件进行修改。
server {
listen 443 ssl;
server_name yourdomain.com;
ssl_certificate /etc/ssl/yourdomain.crt;
ssl_certificate_key /etc/ssl/yourdomain.key;
ssl_protocols TLSv1.2 TLSv1.3;
}
3. 将 HTTP 的这个强制跳转的操作配置为 HTTPS。
server {
listen 80;
server_name yourdomain.com;
return 301 https://$host$request_uri;
}
4. 先执行nginx -t来做语法校验, 确认没有问题没问题之后, 再让nginx -s reload这个操作来生效。
关键必做项
在响应里面加上这个标头, 具体的内容就是 Strict-Transport-Security: max-age=31536000; includeSubDomains , 这样做的话, 就能够防止那种叫做协议降级攻击的问题出现。
混合内容排查, 使用浏览器开发者工具或者在线检测工具, 来确认所有的图片, 还有CSS文件, JS文件, iframe框架这些元素, 全部都按照HTTPS协议来传输。
站内链接更新: 把模板里的http://, 全部都换成https://, 这样做的目的, 是避免因为自引用的协议不一致, 而导致重定向链条变得特别长。
搜索引擎告知的内容是, 需要在对应的搜索引擎资源管理工具中, 提交采用https协议的网站站点信息, 以此来加速关于新协议版本的收录进程。
常见疑难与解决
上线验证清单
第一步是去访问那个写着 http://域名 的地方, 然后确认它会返回一个状态码为 301 的信息, 并且跳转到 HTTPS 这个协议上, 第二步是让浏览器的地址栏里出现一个小锁的标志, 而且同时不能有任何关于安全的警告提示出现, 第三步是要在 SSL Labs 这个地方完成测试, 并且要求目标得到的评分必须是 A 或者 AA, 第四步是去看看搜索引擎的收录状态是不是正常的, 同时要确保没有 HTTPS 和 HTTP 重复内容这样的标记存在, 只有上面这几项全都通过了, 才可以说配置闭环这个事情已经完成。


