首页 黑客接单正文

为什么要把网站升级到HTTPS

作者最近升级了博客网站https:https://fed.renren.com,为什么要升级?

举个最简单的例子,当我打开这个网页时:在网页的右下角显示一个广告:

但是这个网站是美国的:

为什么中国广告要去美国?不止一个网站有这个问题,我自己的博客网站经常有这个问题,经常玩一些广告,为什么?

因为网站被运营商劫持了,它会去你的html在广告中注入一个广告html,如下图所示:

此时运营商相当于中间人,如下图所示:

这个我在《https已经介绍了连接前几毫秒发生了什么,但不同的是,由于中间人的特殊身份是运营商,它处于正常的连接之上。也可以说,由于运营商秘密劫持,你也可以认为这不是一个正常的连接。

无论如何,这种劫持也被称为劫持http劫持只发生在http连接上,而https连接没有这个问题,基本上只要打开就是https广告中不会注入网页。因为传输的数据是加密的,中间人收到一串无法解密的文本,不知道怎么篡改。

防火防盗运营商,但是注入广告还是小事,因为如果是http连接到您的数据是在互联网上明确传输的,包括您的密码和其他敏感信息。您可以闻到您的数据通过服务器之间的路由。您可以做一些修改,如嵌入广告、做一些损坏,或者只是捕获电子邮件内容、账户密码等信息。所以使用它https火狐在非有必要https网页密码输入框提示不安全:

Chrome/firefox浏览器会在更明显的位置提示当前位置http网站不安全,只需点击地址栏左侧i按钮会弹出:

并且https的网站能够提升SEO。

公众连接外面wifi,使用https它可以降低账户信息被盗的风险,但不是100%安全,因为它可以通过在您的设备上种植木马等其他方式获取和控制您的账户。

不管怎么样,搞一个https至少不要让别人认为广告是你自己的网站。那么如何建立一个呢?https网站呢?《https简单介绍了连接前几毫秒发生了什么,需要购买SSL网上还有一些免费证书。证书的分类和价格可以在证书购买机构看到:

证书有三种dv(域名型),ov(企业型)和ev(增强型),dv只要有一个可访问的域名,它是最简单的应用程序ov适用于企业,严格申请需提供企业相关材料,ev公司名称可以显示在地址栏上,如sitepoint.com。为我们的小博客网站建立一个dv类型可以。

免费的dv型证颁发机构叫letsencrypt,它可以提供三个月的 *** ,到期后可以更新,所以它是免费的。安装和应用非常简单,使用certbot下面简要介绍一下安装过程:

先打开certbot选择,选择你的操作系统,比如作者用的centos nginx:

然后它会提示你如何安装它。首先下载一份编译好的可执行文件:

  • wgethttps://dl.eff.org/certbot-auto
  • chmoda xcertbot-auto
  • 然后执行安装命令:

  • sudo./path/to/certbot-auto--nginx
  • 它会先安装一些python包,然后让你输入你的邮箱,然后自动找到你nginx配置文件,找出内部server列出域名,让你选择安装哪个https证书:

                     
    • Which names would you like to activate HTTPS for?
    •                
    • ——————————————————————————-
    •                
    • 1: fed.renren.com
    •                
    • ——————————————————————————-
    •                
    • Select the appropriate numbers separated by commas and/or spaces,or leave input
    •                
    • blank to select all options shown (Enter ‘c’ to cancel):

    选择后,将申请证书,然后检查域名的合法性。如果连接超时错误报告:

                     
    • – The following errors were reported by the server:
    •                
    • Domain: trumporate.com
    •                
    • Type: connection
    •                
    • Detail: Timeout

    所以很可能是防火墙iptables443端口不开放,就像80端口一样开放。

    它将在验证成功后进行SSL下载证书证书nginx的添加ssl的配置:

  • listen443ssl;#managedbyCertbot
  • ssl_certificate/etc/letsencrypt/live/fed.renren.com/fullchain.pem;#managedbyCertbot
  • ssl_certificate_key/etc/letsencrypt/live/fed.renren.com/privkey.pem;#managedbyCertbot
  • include/etc/letsencrypt/options-ssl-nginx.conf;#managedbyCertbot
  • 还会提示是否要把http的重定向到https,如果选择它将添加以下内容nginx配置:

  • if($scheme!="https"){
  • return301https://$host$request_uri;
  • }#managedbyCertbot
  • 301表示资源***转移,浏览器在收到301响应后会自动做重定向。

    因为网站上很多图片的地址都是http它已经固化到数据库中,导致需要https加载网页http图片,即使有证书,浏览器也会提示不安全,浏览器地址样栏的小锁也不见了:

    如果手动更改数据库会比较麻烦,一个比较简单的 *** 就是让它使用http升级的meta标签:

  • <metahttp-equiv="Content-Security-Policy"
  • content="upgrade-insecure-requests">
  • 页面上的一切http所有的请求都将被迫变成https请求。如果服务器不支持某些请求https这些请求会被挂断,但我的网站没有这个问题。

    这样,网站就可以免费升级为https了:

    查看浏览器证书:

    https升级后的问题是加密和解密需要占用更多CPU,加密后的数据会变大,但根据作者的观察加上gzip压缩之后,https传输的内容大小几乎和http除了正常tcp除连接外,还应建立ssl连接,这个时间连接的0.3s ~ 0.5s左右,这需要付出一些代价,但因为浏览器的左下角会提醒用户“正在建立安全连接”,缓冲过程很好。

    【本文是51CTO专栏作者“人人网FED”请转载原稿。51CTO联系原作者获取授权

    戳这里,看作者更好的文章

       
    版权声明

    本文仅代表作者观点,不代表本站立场。
    本文系作者授权发表,未经许可,不得转载。