响应潮流,呼应趋势,突然发现现在还在用http似乎很OUT了,之前没太多的在意(主要是本站实在很渺小,无所谓是不是S,只要能打开就行)。

昨晚在翻看收藏夹的时候发现全部都是S!好吧,我也得跟上时代才行了。太晚了,今天来弄。

1.由于我用的XX面板很便利,所以就开始就想直接在里面申请了,有一年的和三个月(这个自然是大名顶顶的Let's Encrypt了)的。

当然是时间久的好一点了(省得麻烦),好吧,要申请还得“实名”认证,那就去官网认吧,然后认证三次都失败了(最多一天三次……),仔细阅读条件:需要名字、手机号、身份证都对上才可以(好吧,我手机号可能并没有实名……)。

pass……

2.发动度我神功,于是发现了这个。

000.jpg

同样有一年的和三个月的免费证书申请,分别是TrustAsia和Let's Encrypt免费SSL证书。

111.jpg

申请步骤不麻烦,第一步只需要填入要申请的域名(最好以WWW的二级域名去申请,不过这里可以填两个,如图),然后输入邮箱(这将是你的用户名,开始是没有密码的好像,反正我后来想要登入是通过找回密码的方式……)

这里我ECC证书类型(度神告诉我这个的认证匹配速度比RSA要的快很多),验证类型选DNS(在域名中做一条TXT的解析以证明你是域名所有者),也可以是文件验证(这个要上传指定文件到服务器中)。

CSR生成其它我没有试过(我也不是来玩的),用的离线生成(网站说这个最安全),然后需要下载安装一个证书管理器软件KeyManager,软件很干净(并没有其它奇怪的东西,只管证书这一块)。

QQ截图20200424141047.jpg

当然,360总免不了要跳出来作怪(习惯了),这是因为软件要和浏览器互动,所以修改了一个协议(放心允许)。

222.jpg

提示:在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相关配置的后面)。

333.jpg

最终,我的网站是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服务,再次测试得到结果:

QQ截图20200427231740.jpg

两个证书测试网站:

访问 My SSL 访问 SSL Labs
none