八个HTTPS和SSL优化使用心得-减少等待时间和降低Https性能损耗

HTTPS SSL现在基本上是建站标配了。

得益于Let’s Encrypt、Digicert、TrustAsia、Symantec等提供的免费SSL证书,现在不管是个人建站还是企业建站,上Https的成本可以忽略不计了。

为了安全,我们要上Https,但是开启 SSL 会增加内存、CPU、网络带宽的开销。

http使用TCP 三次握手建立连接,客户端和服务器需要交换3个包。

https除了 TCP 的三个包,还要加上 ssl握手需要的9个包,一共是12个包。所以,HTTPS优化得不好,反而容易出现性能慢的问题。

如果网站的流量比较少,加上服务器的性能配置足以支撑起当前的流量,可能感觉不到对服务器性能的拖累。

但是对于大型的网站,例如百度、Google以及热门APP,优化Https性能,减少资源消耗还是非常有用的。

八个HTTPS和SSL优化使用心得-减少等待时间和降低Https性能损耗1域名主机主机格调

本篇文章就来分享一下HTTPS和SSL优化使用几点心得体会

一、如何选择免费SSL证书?

建议选择Let’s Encrypt。Let’s Encrypt免费SSL证书虽然只有90天,支持手动和自动续期。Let’s Encrypt SSL在各大浏览器上都得到认可,是免费SSL证书的首选。

八个HTTPS和SSL优化使用心得-减少等待时间和降低Https性能损耗3域名主机主机格调

Let’s Encrypt适用于VPS等有独立IP的主机上,但是这个免费证书在虚拟主机上使用不是很方便。

现在七牛、阿里云、腾讯云等都提供免费的SSL服务,通过简单的设置就可以配置成功。建议优先使用这些网站提供的免费SSL服务,简单好用。

二、服务器开启HSTS

采用 HSTS 协议的网站将保证浏览器始终连接到网站的HTTPS版本,而不需要用户手动在URL地址栏中输入包含https://的加密地址。我用的是Nginx 服务器,只需要编辑 Nginx 配置文件(如:/usr/local/nginx/conf/nginx.conf)将下面行添加到 HTTPS 配置的 server 块中即可:

add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";

Apache、Lighttpd等启用HSTS详细的方法见:服务器启用HSTS。

八个HTTPS和SSL优化使用心得-减少等待时间和降低Https性能损耗5域名主机主机格调

三、域名加入HSTS preload list计划

上面虽然是启用了HSTS 协议保证了用户访问的始终是Https连接,但是一般地首次访问网站用户都会习惯性地输入非https域名,这就导致了第一次访问网站容易出现http劫持的问题。HSTS preload list计划就是为了解决这个问题的,它是chrome\Firefox\Edge等浏览器内置的列表。

八个HTTPS和SSL优化使用心得-减少等待时间和降低Https性能损耗7域名主机主机格调

加入HSTS Preload List的方法:启用HSTS并加入HSTS Preload List让网站Https访问更加安全-附删除HSTS方法。目前wzfou.com已经成功加入到了HSTS preload list,如果你用的是Chrome或者Firefox,第一次访问本站就是默认用Https连接的。

八个HTTPS和SSL优化使用心得-减少等待时间和降低Https性能损耗9域名主机主机格调

四、开启HTTP/2和OCSP Stapling

HTTP/2 相比于之前的HTTP/1.1 在性能上的大幅度提升,所以只要你启用了Https,记得一定要开启HTTP/2,检查一下你的配置文件是否有:listen 443 ssl http2;

OCSP Stapling 服务器事先模拟浏览器对证书链进行验证,然后将 OCSP 验证结果缓存到本地。这样,当浏览器访问站点时,在握手阶段,可以直接拿到 OCSP 响应结果和证书链,对访问速度有明显提升。

八个HTTPS和SSL优化使用心得-减少等待时间和降低Https性能损耗11域名主机主机格调

Nginx 中开启 OCSP Stapling。(如果 ssl_certificate 指令指定了完整的证书链,则 ssl_trusted_certificate 可省略)

ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /path/to/certs/chained.pem;

Apache 中开启 OCSP Stapling

在 <VirtualHost></VirtualHost> 中添加:

SSLUseStapling on

在 <VirtualHost></VirtualHost> 外添加:

SSLStaplingCache shmcb:/tmp/stapling_cache(128000)

五、使用ECC和RSA双证书

默认的我们都会使用RSA证书,因为RSA证书的兼容性最为广泛。但是ECC 证书拥有体积小、运算速度快、安全性高(256位ECC key就能起到相当于3072位的RSA key的安全性)等特点,可以在一定程度上提供Https性能。

八个HTTPS和SSL优化使用心得-减少等待时间和降低Https性能损耗13域名主机主机格调

Let’s Encrypt已经支持生成ECC 证书了,使用 acme.sh 签发SSL证书, 指定 --keylength ec-256 就可以将证书类型改为 ECC:

acme.sh --issue -w /data/wwwroot/wzfou.com -d wzfou.com  -d www.wzfou.com  --keylength ec-256

需要注意的是ECC在Windows XP上不兼容,这个时候我们就会想到用双证书了,即当不支持ECC证书时Nginx自动将RSA证书展示给用户。如果nginx 的版本大于1.11,直接就可以在配置文件中写上ECC和RSA双证书的路径了,wzfou.com演示如下:

#ECC
ssl_certificate /root/.acme.sh/wzfou.com_ecc/fullchain.cer;
ssl_certificate_key /root/.acme.sh/wzfou.com_ecc/wzfou.com.key;
#RSA
ssl_certificate /usr/local/nginx/conf/ssl/wzfou.com.crt;
ssl_certificate_key /usr/local/nginx/conf/ssl/wzfou.com.key;

重启Nginx,当XP等不支持ECC证书的用户访问网站时,显示的是RSA证书。

八个HTTPS和SSL优化使用心得-减少等待时间和降低Https性能损耗15域名主机主机格调

而其它的用户则优先使用ECC证书。

如果你发现ECC没有优先显示,检查一下ssl_prefer_server_ciphers是否开启,同时ssl_ciphers有没有配置好,以下是wpbox.cc 当用的配置:

ssl_prefer_server_ciphers on;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:!MD5;

另外,下面三个任选其一即可(仅供测试):

ssl_ciphers 'EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:!MD5';

ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';

ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK';

六、 开启DNS CAA

DNS CAA的作用是只允许在记录中列出的 CA 机构颁发针对该域名(或子域名)的证书,以防止有人伪造SSL证书,同时CAA 记录可以控制单域名 SS L证书的发行,也可以控制通配符证书。详细方法见:京东云DNS设置CAA。

八个HTTPS和SSL优化使用心得-减少等待时间和降低Https性能损耗17域名主机主机格调

问题:开启DNS CAA导致错误:Verify error:CAA record for *.wzfou.comprevents issuance。解决的办法就是增加 issuewild 记录: 0 issuewild "letsencrypt.org" 。 另外提供两个检测CAA配置是否正确的网站:

  1. https://caatest.co.uk/
  2. https://dnsspy.io/labs/caa-validator

七、定期自动更新SSL证书

想手动更新方法:

# RSA
$ acme.sh --renew -d wzfou.com –d www.wzfou.com --force

# ECC
acme.sh --renew -d wzfou.com –d www.wzfou.com --force --ecc

一般地acme.sh已经自动添加了定时任务了,定期更新Let’s Encrypt证书,如果你发现没有定期更新证书,检查一下你的Cron任务是否正确,也可以试试强制更新:

"/root/.acme.sh"https://wzfou.cdn.bcebos.com/acme.sh --cron --home "/root/.acme.sh" --force

八个HTTPS和SSL优化使用心得-减少等待时间和降低Https性能损耗19域名主机主机格调

八、检测SSL证书配置

常用的检测网站有:

  1. https://www.ssllabs.com/ssltest/analyze.html
  2. https://myssl.com/

重点推荐用ssllabs.com,检测的结果还是非常地准确,如下:

八个HTTPS和SSL优化使用心得-减少等待时间和降低Https性能损耗21域名主机主机格调

九、综合

综合以上优化策略,Nginx的配置文件具体的优化如下:

server {

listen 443 ssl http2;
#使用HTTP/2,需要Nginx1.9.7以上版本

add_header Strict-Transport-Security "max-age=6307200; includeSubdomains; preload";
#开启HSTS,并设置有效期为“6307200秒”(6个月),包括子域名(根据情况可删掉),预加载到浏览器缓存(根据情况可删掉)

add_header X-Frame-Options DENY;
#禁止被嵌入框架

add_header X-Content-Type-Options nosniff;
#防止在IE9、Chrome和Safari中的MIME类型混淆攻击

ssl_certificate /usr/local/nginx/conf/vhost/sslkey/www.linpx.com.crt;
ssl_certificate_key /usr/local/nginx/conf/vhost/sslkey/www.linpx.com.key;
#SSL证书文件位置

ssl_trusted_certificate /usr/local/nginx/conf/vhost/sslkey/chaine.pem;
#OCSP Stapling的证书位置

ssl_dhparam /usr/local/nginx/conf/vhost/sslkey/dhparam.pem;
#DH-Key交换密钥文件位置

#SSL优化配置

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#只允许TLS协议

ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
#加密套件,这里用了CloudFlare's Internet facing SSL cipher configuration

ssl_prefer_server_ciphers on;
#由服务器协商最佳的加密算法

ssl_session_cache builtin:1000 shared:SSL:10m;
#Session Cache,将Session缓存到服务器,这可能会占用更多的服务器资源

ssl_session_tickets on;
#开启浏览器的Session Ticket缓存

ssl_session_timeout 10m; 
#SSL session过期时间

ssl_stapling on; 
#OCSP Stapling开启,OCSP是用于在线查询证书吊销情况的服务,使用OCSP Stapling能将证书有效状态的信息缓存到服务器,提高TLS握手速度

ssl_stapling_verify on;
#OCSP Stapling验证开启

resolver 8.8.8.8 8.8.4.4 valid=300s;
#用于查询OCSP服务器的DNS

resolver_timeout 5s;
#查询域名超时时间

···

}

实际使用过程中发现个别的“优化”还得根据自身的需要来确定,以下是wzfou.com正在用的Nginx配置,仅供参考:

listen 80; 
listen 443 ssl http2;
#ECC
ssl_certificate /root/.acme.sh/wzfou.com_ecc/fullchain.cer;
ssl_certificate_key /root/.acme.sh/wzfou.com_ecc/wzfou.com.key;  
#RSA 
ssl_certificate /usr/local/nginx/conf/ssl/wzfou.com.crt;
ssl_certificate_key /usr/local/nginx/conf/ssl/wzfou.com.key; 
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_timeout 10m;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_buffer_size 1400;
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
ssl_stapling on; 
ssl_stapling_verify on;
【声明1】:如本站转载别的站的文章,我个人没有添加来源,您可以发电邮:admin#zhuji.gd 提醒我,我会尽快添加文章来源。 【声明2】:本博客不参与任何交易及中介服务,只记录 VPS 测评和优惠,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。
(0)
上一篇 31/03/2019 12:51
下一篇 02/04/2019

相关推荐

  • 免费VPS是怎么从你身上捞钱的?

    很多童鞋刚开始写博客,都想少花钱,用免费VPS,或抱着长期做下去,或者就想尝试一把。 天下没有免费的午餐,其实免费是要交投名状的。对于这些免费的VPS你要交哪些投名状了,或者说他们用免费的VPS要达到什么目的,说白了是怎么赚钱的??以下就是免费VPS赚钱方式: 获得个人注册信息卖给其他主机公司 所有的免费VPS就是想要收集用户的个人信息来的。因为贪图小便宜的人多,这种公司在非常短的时间里就可以搜集到大量用户信息...

    20/03/2019
    12.5K0
  • WordPress 网站上传图片附件出现http报错解决办法

    首先说明,这是搭建WordPress网站的所有用户都可能遇到的一个问题,所以,这是一个常规的WordPress问题。 这个问题不但一直困扰着国内用户,国外的用户也是对这个问题深恶痛绝,因为这个问题最尴尬的是,上传图片,就提示http错误,但导致这个错误的问题却各种各样。 网上也有很多种解决这种问题的办法,国内的不是很系统,但也有写了3条,4条的,国外有一些教程非常完整,有各种解决的办法,但是在WordPress官方论坛里,大部分...

    07/04/2019
    12.5K0
  • 搬瓦工又一次关闭免费更换IP服务

    搬瓦工最早不支持免费更换IP的,需要付费更换,8美元一次。 后来,市场需要,开通了免费检测IP可用性及免费更换IP的服务。 其中免费更换IP间隔时间多次发生变化。 10周、后来5周,再次10周,现在直接关闭了免费更换IP。 不过根据提示信息,搬瓦工可能过几周会重新开放。 搬瓦免费更换IP教程 其实搬瓦工的免费更换IP功能很简单。 登陆搬瓦工官网(https://bwh88.net),选择My Services,然后选择被Q的服务器,进入KiwiVM Contro...

    18/03/2019
    13.5K0
  • 最便宜域名注册商 Porkbun 促销 .us后缀域名 首年注册免费

    about.us 与国外知名域名注册商 Porkbun 联合推出.us后缀域名首年免费注册活动。不过 .us后缀需要美国公民才可以注册,所以大家注册时候,需要填写美国公民信息,不要瞎写,有一定概率被抽查到。 活动链接:https://www.about.us/startup/ 如何生成美国身份可以到以下几个网站: 全套 http://www.fakenamegenerator.com/index.php http://www.haoweichi.com/Index/random http://www.fakeaddressgenerator.com/ http://www.getn...

    13/01/2021
    5.9K0
  • Porkbun域名注册优惠,.COM 仅 $4.75,.NET仅 $5.55

    Porkbun 是国外价格最便宜的域名注册商,成立于2016年,老板是域名界大佬。Porkbun 域名注册价格优惠非常多,特别是新后缀,比狗爹,Namesilo,Name 等老牌商家要良心的多,特别是狗爹,都快没良心了。今天看到 Porkbun 的 .COM 域名首年注册仅4.75美元,.NET 首年注册仅$5.55,一般现在注册商很少有 .COM 和 .NET 域名优惠促销了,。 Porkbun官网 点击访问 Porkbun 官网 除了上面的 .COM 和 .NET 传统域名后缀,Porkbun 的新域...

    25/02/2022
    640
  • 阿里云ECS服务器如何创建修改删除自动快照策略?

    最近迁移三个站,其中一个站因为自己的没有备份的缘故,造成SQL丢失,辛辛苦苦一个多月收集的导航站歇菜。。。还是因为自己太懒,没有潜心研究备份这方面的东西,现在很多主机都提供免费、付费的备份服务,支持一键恢复。。 阿里云 ECS 服务器的快照功能其实就是一种备份,因为阿里云快照可以保留某个时间点上的磁盘数据状态,用于数据备份或者制作自定义镜像。 比如当你的服务器出问题的时候,直接在快照列表中找到相应的快照...

    19/03/2019
    16.6K0
  • 主机推荐:Fastcomet虚拟主机

    在国外买主机,记得资料如实填写(英文或拼音),否则可能要人工验证。 应该是目前国外最高性价比虚拟主机 国内用户很可能没听说过Fastcomet,这不奇怪。 Fastcomet是新兴主机商,技术和服务上有后发优势。 他可能是目前性价比最高的虚拟主机,因为还在培养客户阶段,提供的虚拟主机服务真的非常慷慨。 国外权威的主机评测机构Host Advice上目前排名第一。 终身免费的域名 现在一个域名的价格在$10左右,有些注册上还可能更贵,...

    13/03/2019
    12.7K0
  • Linode VPS日本Tokyo 2机房速度和性能 是否值得选择

    Linode最近几年可能被广泛的使用不多,主要原因在于建站市场并不是那么乐观,早期的站群、外贸网站用途都开始趋于精准化运营,并不需要太多的服务器。当然也包括最近几年主机商家剧增,价格竞争激烈,其中包括Vultr、DO两者商家产品模式与Linode相似度较高,确实是吸引到部分原本使用Linode的用户市场。 Linode不被广泛使用的原因之一还包括新注册账户只能信用卡付款激活,对于大部分学生、普通网友可能没有双币信用卡、或者觉...

    07/03/2019
    12.5K0
  • 篱落主机:香港虚拟主机年付仅40元,性能稳定,绝不超售。

    现在建站基本都用 VPS ,优势在于容量大,配置自由。虚拟主机不断地萎缩,三号主机、主机格调、衡天主机被收购,去年还跟酋长聊到这个事情,颇为感慨。 篱落主机是由业内牛人新创品牌,其有非常丰富的主机维护经验,在业内有良好声誉和影响力,很多老站都更换成了篱落虚拟主机足以说明其实力。 篱落主机特点 性价比高,篱落虚拟主机套餐配置性能高于市面同款。 香港共享虚拟主机和独立 IP 虚拟主机都位于香港 Cloudie 机房,线...

    14/07/2020
    890
  • 什么是阿里云 ECS 服务器

    在实际操作中,经常碰到新人不懂云 ECS 服务到处问什么是 ECS 云服务器。 所以本文主要分享 ECS 云服务器相关名词、知识点,帮助新人快速上云。 一、什么是云服务器? 不同商家对云服务器的称呼不同,比如亚马逊叫 AWS,腾讯云叫 CVM,ECS 是阿里云的叫法,其实都是指的云服务器。 和以前的硬件服务器不同,云服务器是由千千万万台服务器组成的服务器集群。 使用云服务器 ECS 就像家庭使用水、电、煤气一样方便、高效。不用提前...

    21/03/2019
    15.4K0
返回顶部