当前位置: 首页 > 科技观察

为什么要将网站升级为HTTPS

时间:2023-03-16 02:14:23 科技观察

作者最近将博客网站升级为https:https://fed.renren.com,为什么要升级呢?举个简单的例子,当我打开这个网页时:在网页的右下角会有一个广告:但是这个网站是美国的:为什么中国的广告要跑到美国?而且不止一个网站有这个问题,而我自己的博客网站在家打开也经常出现这个问题,经常会弹出一些广告,这是为什么呢?因为网站被运营商劫持了,它在你的html中注入了一段广告html,如下图:这时候运营商相当于一个中间人,如下图:我已经介绍过了《https连接的前几毫秒发生了什么》中的这个,但是不同的是因为中介的身份比较特殊,是运营商,所以是在正常连接上。也可以说是因为运营商暗中劫持,你也可以认为不是正常连接。不管怎么说,这种劫持也叫http劫持,只发生在http连接上,而https连接则没有这个问题。基本上,只要打开一个带https的网页,就不会被注入广告。因为传输的数据是加密的,中介收到的是一串无法解密的文本,不知道如何篡改。防火、防盗、防运营商,但是注入广告还是小事,因为如果是http连接,你的数据在网络上都是明文传输的,包括你的密码、路由等敏感信息你和服务器之间可以嗅探到你的数据,你可以做一些修改比如嵌入广告,做一些破坏,或者干脆抓取邮件内容,账号密码等信息,所以使用https是很有必要的。Firefox会在非https网页的密码输入框提示不安全:Chrome/firefox等浏览器会在比较明显的位置提示当前http网站不安全,只需点击地址栏左侧的i按钮即可弹出:和https网站可以提高SEO。对于外部连接的公共wifi,使用https可以降低账号信息被窃取的风险,但也不是100%安全,因为它可以通过在您的设备上植入木马等其他方式获取并控制您的账号。不管怎样,有个https还是很有必要的,至少不要让别人以为广告是你自己网站的。那么如何搭建一个https网站呢?我在《https连接的前几毫秒发生了什么》里已经简单介绍过了,需要购买SSL证书,网上有一些免费的证书。在证书购买机构可以看到证书的分类和价格:证书分为dv(域名)、ov(企业)和ev(增强)三种,dv最简单,只要有可访问的域名即可name可以申请,ov是给企业用的。申请要求比较严格,需要提供企业的相关材料。ev可以在地址栏显示公司名称,如sitepoint.com。对于像我们这样的小型博客站点,有一个dv类型就足够了。有一个免费的dv类型的证书授权机构letsencrypt,可以提供三个月的免费使用,到期可以续费,所以是免费的。而且安装和应用都非常简单,使用certbot安装即可。下面简单介绍一下安装过程:首先打开certbot网站,选择你的操作系统,比如笔者使用的是centos+nginx:然后会提示你如何安装,首先下载一个编译好的可执行文件:wgethttps:///dl.eff.org/certbot-autochmoda+xcertbot-auto然后执行安装命令:sudo./path/to/certbot-auto--nginx它会先安装一些python包,然后让你输入你的邮箱,然后自动进入你的nginx配置文件,找出里面服务器的域名并列出来,让你选择安装哪个https证书:WhichnameswouldyouliketoactivateHTTPSfor?————————————————————————————-1:fed.renren.com————————————————————————————-选择适当的数字,用逗号和/或空格分隔,或将输入留空以选择显示的所有选项(输入“c”取消):选择后,它将申请证书,然后验证域名的合法性,如果报连接超时错误:–s报错如下erver:Domain:trumporate.comType:connectionDetail:Timeout那么很可能是防火墙iptables的443端口没有打开,像80端口一样打开就可以了。验证成功后,会下载SSL证书。同时给nginx添加ssl配置:listen443ssl;#managedbyCertbotssl_certificate/etc/letsencrypt/live/fed.renren.com/fullchain.pem;#managedbyCertbotssl_certificate_key/etc/letsencrypt/live/fed.renren.com/privkey.pem;#managedbyCertbotinclude/etc/letsencrypt/options-ssl-nginx.conf;#managedbyCertbot也会提示是否将http重定向到https。如果是,则会添加如下nginx配置:if($scheme!="https"){return301https://$host$request_uri;}#managedbyCertbot301表示资源***转移,浏览器收到后会自动重定向301响应。因为网站很多图片的地址都是http,已经固化到数据库中,所以需要在https网页中加载http图片,这样即使配置了证书,浏览器也会提示不安全,浏览器地址栏很小。锁没了:手动改数据库会很麻烦。更简单的方法是使用meta标签进行http升级:https请求。如果某些请求的服务器不支持https,这些请求就会挂掉,但是我的网站没有这个问题。这样网站就可以愉快的免费升级到https了:在浏览器中查看证书:https升级后的问题是:加密和解密需要占用更多的CPU,加密后的数据会变大,但是根据笔者观察,加上gzip压缩后,https传输的内容大小和http的差不多了。除了正常的tcp连接外,还需要建立ssl连接。这个时间一般在0.3s~0.5s左右。这需要付出代价,但是由于会在浏览器的左下角提示用户“正在建立安全连接”,有些是缓冲过程,所以其实还是可以的。【本文为专栏作者“人人网FED”原创稿件,转载请联系原作者获得授权】点此查看更多本作者好文