w3ctech

实现HTTPS,原来如此简单

随着互联网的发展,安全问题的不断提升,所以各种新的规范,新的技术的实施最基本的要求就是你的网站必须是HTTPS的。

以前看了很多文章,在我的心目一直觉得要让自己的网站支持HTTPS是很复杂的事情,但是当腾讯云推出免费的SSL证书以后,我做了一下尝试,最后发现让网站支持HTTPS,原来如此简单!

注:HTTPS本身还是非常复杂的,之前有一本书叫《HTTP权威指南》,现在又出来了一本新书,叫《HTTPS权威指南》(由图灵出版,地址:http://www.ituring.com.cn/book/1734 ),从书的厚度你就知道大概知道有多么复杂。

在我开始讲如何操作之前,你先看看w3ctech的HTTPS:https://www.w3ctech.com

HTTPS

当然目前w3ctech还支持http访问,我还需要做一些调整,后续就直接强制到HTTPS了。

好了,说了这么多,你也看到了w3ctech已经支持HTTPS,哪我下面就来说说怎么让你的网站支持HTTPS吧(下面步骤主要基于Linux系统的主机、Nginx配置进行)!

1、首先你要有自己的网站(自己的服务器、域名)

2、访问腾讯云,登录以后进入控制台,直接访问这个链接即可:https://console.qcloud.com/ssl

3、你看到下面的这个界面,点击申请,按照他的要求操作即可:

腾讯云SSL证书申请

4、当证书申请好以后,将证书下载到本地解压以后,你可以通过scp命令将证书文件上传至你的服务器(注:证书做好备份,同时上传至服务器的目录不能够通过url可以访问)

5、证书上传至服务器以后,通过ssh登录服务器,开始去为你的nginx进行配置:

// 需要注意:证书路径一定要对,将ssl_certificate 和 ssl_certificate_key的值改成你证书实际存放的路径
server {
        listen 443;
        server_name www.w3ctech.com;
        ssl on;
        ssl_certificate /home/conf/1_www.w3ctech.com_cert.crt;
        ssl_certificate_key /home/conf/2_www.w3ctech.com.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
        ssl_prefer_server_ciphers   on;
        location / {
            root   html;
            index  index.html index.htm;
        }
 }

注:腾讯云有更详细的配置介绍:https://www.qcloud.com/doc/product/400/%E8%AF%81%E4%B9%A6%E5%AE%89%E8%A3%85%E6%8C%87%E5%BC%95

同时要注意在nginx配置中的ssl_protocols和ssl_ciphers非常重要,之前我配置的有问题,只支持TLSv1 和MD5,所以造成微信小程序中无法读取数据,同时也浪费了证书的安全性。 2017/01/09更新

6、上面的配置肯定是不够的,由于w3ctech是使用的thinkjs开发的,所以还需要使用Nignx 做反向代理,所以还需要在这个里面进行一系列的配置。

7、如果你需要你的网站只支持HTTPS访问的话,你还需要配置一个80端的跳转(目前w3ctech没有配置跳转,80端口依然保持不变,还是反向代理的),跳转也很简单,配置如下:

server {
        listen 80;
        listen 443 ssl;

       #省略其他...

       # http访问时,301跳转至https
       if ($scheme = http) {
          return 301 https://$server_name$request_uri;
       }
}

当然还有更专业的Nginx的配置,大家可以参与Nginx官方的文档:http://nginx.org/en/docs/http/configuring_https_servers.html

好了,通过以上配置,记得重启Nginx哟!

重启完以后,你在浏览器中访问看看你的网站,是不是已经可以访问了,HTTPS是不是变绿了,没有变绿?好吧,哪打开浏览器开发者工具控制台看看吧,哪些资源还不是HTTPS的(比如图片资源,比如调用了第三方的API服务,w3ctech现在网站上用了又拍云的图片存储服务,只要你有证书,在腾讯云上申请好以后,下载下来,在又拍云上轻松配置即可支持HTTPS,然后将你的资源改成HTTPS即可),赶紧换掉!

这只是万里长征的第一步,后面还有很多事情,但是你会发现,原来如果只是让自己的网站支持HTTPS如此简单,赶紧行动吧!

当然还有其他朋友也有推荐另外一个国外的提供免费证书的网站Let’s Encrypt:https://letsencrypt.org/

你想折腾,你也可以试试,不过我觉得腾讯云提供的SSL证书挺方便的,简单直观,点几下,按步骤操作即可!

怎么样?要试试吗?? ? ?

w3ctech微信

扫码关注w3ctech微信公众号

共收到1条回复

  • 赞赞赞,博客已支持

    回复此楼