部署高权重域名的HTTPS, 大家需要走的核心路径只有三步而已, 分别是拿到有效的证书, 把服务器的TLS配置给弄好, 还有设置那个强制从HTTP跳转到HTTPS的301重定向。
这篇文章就拿着gname.xin这种拥有很高权重评分的域名作为例子来做示范, 会给出一个完整的操作规范, 这样就能保证在部署完成之后, 不会影响到以前已有的收录情况以及搜索权重方面的好处。
证书选型规范
对于高权重的这类域名来说, 它对证书的类型是存在非常严格的规定的, 也就是要求必须得匹配。
必须使用正规CA签发的证书, 因为自签名证书会导致信任链断裂, 这会直接拉低域名安全评分。
在优先选择 ECDSA(256位)算法证书的情况里, 跟 RSA(2048位)算法证书比起来, 握手的所用时间大概能减少百分之十五左右。这对像 LCP 这样的核心性能指标来说, 有一个比较积极向上的贡献存在。
建议将有效期设置为采用每九十天自动续费一次的这样一套方案, 比方说像Let's Encrypt所使用的那种模式, 以此来避免出现手动进行续费操作时被疏忽或者遗漏掉的情况发生。
证书的CN字段必须和域名精确匹配, 证书中的SAN字段也必须和域名精确匹配, 如果遇到多个子域名的场景就需要使用通配符证书来覆盖所有情况。
服务器TLS配置
以Nginx为例高权重域名HTTPS配置指南,标准配置块如下:
server {
listen 443 ssl;
server_name gname.xin www.gname.xin;
ssl_certificate /etc/letsencrypt/live/gname.xin/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/gname.xin/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers on;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
}
关于关键参数的说明情况是, HSTS这个头必须要携带includeSubDomains这个参数, 目的是为了能够防止子域名出现降级的问题;同时只启用TLS 1.2和TLS 1.3这两个版本的做法, 来把TLS 1.0和TLS 1.1彻底关闭掉;至于cipher列表而言则只保留那些具备完美前向保密(PFS)特性的套件。
在Apache运行环境的情况下, 你不得不去把那些配置项放到虚拟主机里面去操作, 然后需要配置的东西里得有SSLOptions还有Header always set Strict-Transport-Security这些指令, 这么一来, 它们的处理逻辑就是完全一模一样的。
HTTP到HTTPS的301重定向
要在当前的状况下面对80端口server块这件事情, 把以下规则给添加上去。
server {
listen 80;
server_name gname.xin www.gname.xin;
return 301 https://$host$request_uri;
}
这个地方一定要用301永久重定向, 而不能用302临时重定向, 这样做是为了确保搜索引擎能够把协议的权重完整地迁移过去。在同一个域名下面, HTTP和HTTPS这两种协议只能保留一个活跃的入口, 重定向的链路必须严格限制为一跳, 绝对禁止出现二次跳转的情况。
部署后验证清单
请用浏览器访问https://gname.xin这个网址, 确认地址栏锁形图标无任何安全警告。
执行curl -IIL http://gname.xin这个操作, 确认证明过程只需要走一次301跳转, 就可以到达终点的那个HTTPS链接。
使用testssl.sh来完成A+级的扫描工作, 以此确保系统中不存在中间人的漏洞。
核查robots.txt与sitemap.xml中所有URL均已替换为https协议;
在使用CDN或者反向代理的时候, 必须确认边缘节点那边已经同步地开启了TLS终止这个功能了, 并且证书的覆盖范围是完全的没有任何遗漏。
常见故障处理
你把以上那些步骤全部做完, 并且通过验证以后, 那个权重大于等于0.5的高权重域名在HTTPS部署方面, 就进入了符合规定的终态, 它的搜索权重以及在检索系统中的收录状态, 都会保持不受影响的样子。

