【大拿分享】去哪儿网https改造分享

seo技术分享评论22阅读模式

https大大改进了网站的安详性,镌汰了流量挟制,越安详的网站对用户越有益。即即是https改革有些难度,也该当大力大举推进https的改革。下面我们特邀了去哪网的同窗举办了关于https改革的分享!

本文作者:去哪儿高级工程师 欧阳何顺、去哪儿网SEO认真人 吕令建

一、领略HTTPS

先不聊HTTP和HTTPS的区别,从谈天软件提及,假设我们要实现A能发一个hello动静给B,假如我们要实现这个谈天软件,只思量安详性题目,要实现A发给B的hello动静包,纵然被中间人拦截到了,也无法得知动静的内容

那么,怎样做到真正的安详呢?方针是A与B通讯的内容,有且只有A和B有手段看到通讯的真正内容,为了防备内容被第三方窃取,发送方可以通过密钥S对谈天内容举办加密,吸取方在收到谈天内容之后,再用密钥S解密谈天内容,只要密钥不果真给圈外人,同时密钥S足够安详,我们就可以担保只有A与B知道谈天内容

二、HTTPS的优弱点

利益 

SEO方面:谷歌曾在2014年8月份调解搜索引擎算法,并称“比起平等HTTP网站,回收HTTPS加密的网站在搜索功效中的排名将会更高”。

安详性:尽量HTTPS并非绝对安详,把握根证书的机构、把握加密算法的组织同样可以举办中间人情势的进攻,但HTTPS还是现行架构下最安详的办理方案,首要有以下几个甜头:

行使HTTPS协议可认证用户和处事器,确保数据发送到正确的客户机和处事器;

HTTPS协议是由SSL+HTTP协议构建的可举办加密传输、身份认证的收集协议,要比http协议安详,可防备数据在传输进程中不被窃取、改变,确保数据的完备性;

HTTPS是现行架构下最安详的办理方案,固然不是绝对安详,但它大幅增进了中间人进攻的本钱。

弱点 

SEO方面:据ACM CoNEXT数据表现,行使HTTPS协议会使页面的加载时刻延迟近50%,增进10%到20%的耗电,另外,HTTPS协议还会影响缓存,增进数据开销和功耗,乃至已有安详法子也会受到影响也会因此而受到影响。

经济方面:SSL证书必要钱,成果越强盛的证书用度越高,小我私人网站、小网站没有须要一样平常不会用;

HTTPS毗连缓存不如HTTP高效,大流量网站如非须要也不会回收,流量本钱太高;

HTTPS毗连处事器端资源占用高许多,支持访客稍多的网站必要投入更大的本钱,假如所有回收HTTPS,基于大部门计较资源闲置的假设的VPS的均匀本钱会上去;

HTTPS协议握手阶段较量费时,对网站的响应速率有负面影响,如非须要,没有来由捐躯用户体验

三、支持HTTPS的方法

增进HTTPS的支持必要在nginx可能tomcat上增进证书(证书必要ops来购置),两种要领只必要选用个中一种。我们选择了通过nginx设置证书的方法来做HTTPS支持的工作。缘故起因是这种方法可以通过ops同一设置证书,不必要在每台处事器上依次设置HTTPS证书,能晋升设置服从。

通过tomcat设置证书

在开拓情形里时,必要本身来天生证书:1、天生证书;2、找到java的目次;3、天生一个证书。

keytool -v-genkey -alias tomcat -keyalg RSA -keystore ~/keystore

记着天生证书时的暗码

在tomcat的conf/server.xml 设置里增进connector

譬如,我的是server.xml

<Connector port="8443"

maxThreads="150" minSpareThreads="25" maxSpareThreads="75"

enableLookups="true" disableUploadTimeout="true"

acceptCount="100" debug="0" scheme="https" secure="true"

clientAuth="false" sslProtocol="TLS"

keystorePass="121212"  ---- 这个是您其时的暗码

SSLEnabled="true"

keystoreFile="/home/q/keystore" -- 这个您第二步时,天生证书的地点

/>

行使这种要领,直接用request.getSchmeme()可以或许看到https

通过nginx设置证书

在已经购置好证书的条件下,可以通过以下方法设置证书。

nginx设置

server {

listen 443; 

server_name dujia.qunar.com;

charset utf8; 

gzip off; 

ssl on;

ssl_certificate/home/q/nginx/ssl/server.crt;

ssl_certificate_key/home/q/nginx/ssl/server.key; 

if ( $request_method !~ GET|POST|HEAD ) {

return 403;

}

proxy_set_header Host "dujia.qunar.com";

proxy_set_header X-Real-IP$remote_addr;

proxy_set_header X-Forwarded-For$proxy_add_x_forwarded_for;

proxy_set_header dj-sch "https";

proxy_set_header X-Real-Scheme $scheme;

location / {

proxy_pass :80;

#proxy_pass ;

}

}

在java中通过X-Real-Scheme或dj-sch获取当前协议

SchemeUtil.java

private static String HTTPS_HEADER = "X-Real-Scheme";

private static String HTTPS_SCHEME = "https";

private static String HTTP_SCHEME = "http";

public static String getScheme(HttpServletReq
uest request){

String scheme = request.getHeader(HTTPS_HEADER);

if(scheme != null &&scheme.equals(HTTPS_SCHEME)){

return HTTPS_SCHEME;

}else {

return HTTP_SCHEME;

}

}

四、代码涉及的窜改

页面哀求的静态资源

js && css

靠山将jsp中域名为*.quanrzz.com 的js,css链接改为 //*.qunarzz.com

图片

将jsp和java工程中给出的图片url举办修改(缘故起因是当前适用的图片处事器不能同时支持http和https),图片的http和https域名对应相关如下:

接口

内部接口:修改接口返回的url,同一名目为://xxx.xx.xx/;

宜家网
  • 本文由 发表于 2021年7月18日 14:35:48
  • 转载请务必保留本文链接:https://www.yjro.com/15148.html

发表评论