响应潮流,呼应趋势,突然发现现在还在用http似乎很OUT了,之前没太多的在意(主要是本站实在很渺小,无所谓是不是S,只要能打开就行)。
昨晚在翻看收藏夹的时候发现全部都是S!好吧,我也得跟上时代才行了。太晚了,今天来弄。
1.由于我用的XX面板很便利,所以就开始就想直接在里面申请了,有一年的和三个月(这个自然是大名顶顶的Let's Encrypt了)的。
当然是时间久的好一点了(省得麻烦),好吧,要申请还得“实名”认证,那就去官网认吧,然后认证三次都失败了(最多一天三次……),仔细阅读条件:需要名字、手机号、身份证都对上才可以(好吧,我手机号可能并没有实名……)。
pass……
2.发动度我神功,于是发现了这个。
同样有一年的和三个月的免费证书申请,分别是TrustAsia和Let's Encrypt免费SSL证书。
申请步骤不麻烦,第一步只需要填入要申请的域名(最好以WWW的二级域名去申请,不过这里可以填两个,如图),然后输入邮箱(这将是你的用户名,开始是没有密码的好像,反正我后来想要登入是通过找回密码的方式……)
这里我ECC证书类型(度神告诉我这个的认证匹配速度比RSA要的快很多),验证类型选DNS(在域名中做一条TXT的解析以证明你是域名所有者),也可以是文件验证(这个要上传指定文件到服务器中)。
CSR生成其它我没有试过(我也不是来玩的),用的离线生成(网站说这个最安全),然后需要下载安装一个证书管理器软件KeyManager,软件很干净(并没有其它奇怪的东西,只管证书这一块)。
当然,360总免不了要跳出来作怪(习惯了),这是因为软件要和浏览器互动,所以修改了一个协议(放心允许)。
提示:在DNS验证中,做完TXT解析后要先点旁边的测试查询记录是否生效再“点击验证”(正式递交SSL申请),别忘了暂时关闭防火墙(我默认是屏蔽境外访问的,虽然我的服务器就是在境外……好讽刺啊)。
等待一两分钟,证书申请通过,得到证书和KEY(KEY需要在KeyManager中才能查看),在KeyManager中“证书管理”——“更多”——“查看PEM”得到证书(PEM格式)和密钥(KEY),在面板的SSL中粘贴部署完成。
打开站点试试访问https是否成功,之前用的http所以还需要动动数据库把地址全修改成https的,直到浏览器提示安全为止。
接着验证一下网站HTTPS评级,开始只得到A,根据网站原话:
如何达到A+
最近发现有很多blog主在他们的blog中推荐我们MySSL,这让我们非常惊喜,在这里首先感谢一下这些blog主对我们MySSL的推广。
但是在看到 给启用 SSL 的站点推荐个 HTTPS 专用工具网站 的评论中,有一些blog主对如何评到A以及A+不是很理解,这里简单的说明一下。
首先要是,这个评分,并不仅仅是针对于证书的部署情况而言的,这是一个多方面综合的评级。其中包括了证书、SSL协议、加密套件、漏洞、不安全的外链等等。如果您的网站的评分已经达到A,那么没有被评到A+的最大的可能性就是没有使用HSTS,使用HSTS的方法很简单,只要在添加Strict-Transport-Security这个HTTP头部信息即可。
用nginx服务器做说明:
add_header Strict-Transport-Security "max-age=31536000";
但有一点需要注意,Strict-Transport-Security中的max-age的时间不能小于15552000。
按照上面的话,在nginx配置文件中合适的地方插入以上代码即可(就在SSL相关配置的后面)。
最终,我的网站是A+
更新,根据网友提醒“本站在 SSL Labs 中的评级只有B”。
经测试,“This server supports TLS 1.1. Grade capped to B” 提示TLSv1.1协议不合格。
在狂补一通资料和折腾之后,发现以咱的能力实在是配置不好这个TLS 1.1了,而且:
SSL3.0/TLS1.0/TLS1.1也该寿终正寝了
随着TLS1.3协议的发布,各大操作系统也已厌烦对旧版SSL3.0/TLS1.0/TLS1.1的支持。根据Mozilla基金会的统计,当前主流浏览器已相继停止支持SSL3.0,且TLS1.0/TLS1.1使用占比已低于2%,继续支持旧版协议已不合时宜。谷歌、微软、火狐、苹果相继宣布,对SSL3.0/TLS1.0/TLS1.1的支持时间截止到2019年12月,2020年起,对仍旧使用SSL3.0/TLS1.0/TLS1.1协议的网站,将强制进行不安全提示或禁止访问。
简单来说,就是随着网络时代的进步,SSL3.0/TLS1.0/TLS1.1这些只有古董级的电脑(XP)才支持的协议在新电脑中已经基本被废除。
所以我只需要在Nginx中配置只支持最新的 TLSv1.2 TLSv1.3 协议即可得到A以上的评级。
在配置文件中找到:
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
修改为:
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_protocols是协议的版本声明,而ssl_ciphers决定了协议采用的加密组合方式(推荐一个站点 Security/Server Side TLS,里面有Mozilla官方推荐的 tls ciphers 组合,有兴趣去看看。),我这里贴出的就是他们推荐的加密套件。
修改完后,重启Nginx服务,再次测试得到结果:
两个证书测试网站:
访问 My SSL 访问 SSL Labs
在 ssllabs (https://www.ssllabs.com/)上测试只得到 B,还需多优化
感谢提醒,已更新。