Ура!是HTTP/2!

几个月之前就想给站点加上HTTPS了,我这么个无名小站都被强制上过一次广告(看自己网站的时候发现的= =)。万一变成人家的支付宝红包/淘宝活动/并夕夕推广重灾区了怎么办。直到今天才下定决心来解决这件事情,唉,拖延症病入膏肓啊。

初次接触到HTTP/2这个技术是某一次在看某v开头(咳咳)的魔法工具的时候,见到了Akamai公司做的一个示例。至于Akamai是个啥公司呢,接触过烂橘子的朋友肯定知道,这是一家CDN提供商,提供的服务主要是网络资源的托管一类的。(举个类似的例子,七牛云?)再加上Wappalyzer里面那个蓝色的小闪电看起来好炫!于是就自己动手,丰衣足食了。

其实整个过程中步骤十分简单,大致可以描述如下:

  1. 下载用于申请免费SSL证书的certbot-auto脚本;
  2. certbot-auto -d <domain-name>用于给指定域名申请SSL证书,如果用的是nginx,而且配置文件不是放在/etc/nginx.conf的环境下的话(LNMP说的就是你),可以选择在certbot-auto后添加certonly参数来表示只需要该脚本来申请证书,配置什么的由自己来;
  3. ssl on语句告诉nginx该server需要启用SSL协议;
  4. 如果用的是certbot-auto certonly的话,申请成功后会把证书的地址告诉用户,将该地址添加到nginx对应server的配置中即可。ssl_certificatessl_certificate_key对应的分别是证书的公钥和私钥,使用certbot-auto生成后两者的名字对应为fullchain.pemprivkey.pem,记得不要搞错了;
  5. listen参数的端口从80改为443,再在后面添加ssl http2参数,用于启用HTTP/2;
  6. 新建一个server,监听相同的地址的80端口,然后加一句:
    return 301 https://$server_name$request_uri;

    以使得访问该网站的用户都强制使用HTTPS。当然,如果浏览器支持HTTP/2的话,会自动启用该协议的;

  7. 可以添加这么两行:
    ssl_stapling on;
    ssl_stapling_verify on;

    来缩短SSL证书的查询时间,提高用户体验,具体信息请直接搜ssl stapling。

然后整个人就卡在了第二步,说是什么tk域名的CAA记录查不到,超时,卡了一上午,中午都差点头疼的午睡没睡着。。后来发现是云主机默认的DNS服务器有问题,加了一个Google的8888服务器问题马上解决,我tm。。。

最后顺带提一句,之前在网上看到过HTTP/2本身其实是可以不用SSL协议的,但是网络安全是大势所趋,所以基本上上了HTTP/2的都会用SSL,甚至两者变成了必然关系,很少有见到裸HTTP/2的配置教程了。

标签: none

添加新评论