您好!欢迎访问福玩代码!
广告位

网站HTTPS配置优化:SSL证书与TLS版本实战避坑指南

栏目: 日期: 浏览:131

HTTPS配置常见的慢和报错怎么治

设有多位站长配置完结SSL相应证书之后,发觉网站开启速度有所减缓了,或者出现那样几种情形,即混合内容发出警告,还有证书不信任诸多问题噜。实际上这往往并非SSL其自身所造成有关问题的,而是源自配置层面其细节做得并非到位了的。首先来论证书选择这方面吧:在此推荐诸位使用Let‘s Encrypt或者是那ZeroSSL这两者所提供免费证书的,并且配合着acme.sh来实现自动续签的,如此做既省心同时又具备安全性的。付费证书于兼容性这个范畴之内并没有本质上所凸显优势的,除非你自身所处情况是特别需要OV或者EV证书所带来品牌信任感这个情况的。

证书完成部署之后,要记得展开证书是否完整的检查工作。遗漏中间证书乃是致使HTTPS不信任的常见根源所在。倘若运用SSL Labs的在线测试工具予以扫描,要是出现“Chain issues”这样的提示,那就表明中间证书存在缺失情况或者处于顺序错误状态。解决该问题的办法是在服务器配置当中明确且具体地指定完整的证书文件,例如在Nginx里面就如此这般编写:

ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;

另一个容易踏入的坑乃是混合内容,网页里加载有HTTP相关的图片,还有JS或者CSS,随后浏览器地址栏的锁便会变灰,甚至出现打叉的情况,检查办法颇为简单,打开开发者工具,瞧瞧Console里有无“Mixed Content”犯错,解决思路为强迫全站HTTPS,并于代码中统一地运用相对路径或者//协议,抑或是配置Content - Security - Policy头用于限制加载来历。

TLS版本到底该不该关老协议

TLS版本的优化属于那种让人难以抉择的话题,关闭掉TLS 1.0以及1.1能够极大程度地提高安全性,然而部分诸如Android 4.x、Windows XP系统上的IE这类陈旧设备就会没办法进行访问,对于面向广大普通用户的网站来说,提出保留,建议,是保留TLS 1.0,不过注意只是给予HTTPS页面使用,并非用于API或是登录等敏感接口方面,如果网站主要用户是技术人员或者企业客户,那么完全能够仅仅开启TLS 1.2和1.3。

配置时所采用的方法那种直观的特性是很明显的,就拿Nginx这个举例来说,则是在相对应的server块当中去进行书写,其写的内容是:

ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';
ssl_prefer_server_ciphers on;

予以留意,ssl_ciphers切莫书写太过陈旧或者太过薄弱的算法。当代的浏览器均对GCM模式的加密套件予以支持,其具备较高的安全性并且性能良好。除此之外,启用TLS 1.3能够削减握手的次数,使得首次连接更为迅速便捷。能够运用OpenSSL命令对服务器所支持的TLS版本展开检查:

openssl s_client -connect yourdomain.com:443 -tls1_2

要是返回了证书信息,那就表明这个版本是可以使用的。把它换成 -tls1_3再去尝试一回,同样如果能够连接那便意味着配置是正确的。

性能优化中容易被忽略的的几个参数

HTTPS的速度显现出迟缓的状况 ,在诸多情形之下并非是SSL自身的缘故 ,而是服务器的配置未能妥善调整好。开启Session Resumption能够明显地削减重复握手时所产生的开销。在Nginx当中添加如下内容:

ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;

客户端在首次进行握手之后,后续访问之时就能够重复使用先前的会话信息,从而避免了完整的TLS握手,对于高并发的站点而言,这种优化所产生的效果是极为显著的。

再一个实用的技巧乃是启用OCSP Stapling、默认情形下,浏览器于加载HTTPS页面之际需要前往OCSP服务器去验证证书是不是被吊销了,这将会产生额外的DNS查询以及HTTP请求,进而拖延页面的加载、开启之后,由服务器主动给予证书状态,省却了浏览器的验证步骤、配置如下:

ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 1.1.1.1 valid=300s;
resolver_timeout 5s;

要记得去对服务器防火墙进行检查,看一看其是不是将443端口给放行,同时还要看看是不是对HTTP/2予以支持,HTTP/2在HTTPS环境当中是默认启用的,它能够借助多路复用把连接数给减少,再配合上静态资源压缩,效果会马上显现出来,使用curl -I --http2 https://yourdomain.com去验证一下是不是已经启用了。http://www.fouwan.com