背景:我不是专业运维,且毕业从事PHP才刚一年,对Linux服务器也是在摸索中,为了熟悉Linux,我在Windows和Linux之间切换了无数次,最后终于在平常使用中都适应Linux了,一如当初在sublime和vim,svn和git,拼音和五笔之间来回切换; 以前公司作的产品是以ASP形式提供给客户使用,因此每签一个客户,都须要客户提供他们的服务器给我司,而后我再去客户的服务器上给布署环境,后来公司领导决定作SaaS,要求之一是要把http换为https,为了信息安全,而后我就开始各类搜索,最后如愿以偿,但实现不是重点,重点是某天有人问我,https和http有什么区别时,我回答:一个加密一个没有加密,https更安全。别人接着问为何?我无言了。此后我甚至怀疑我配置的https到底有没有做用,后来我才去详细的学习,第一次写博文,并且是照着本身的理解,确定有不对的地方,请你们斧正,很是感谢! http是一种无状态协议,在OSI七层模型(由底到高:物理层,数据链路层,传输层,网络层,会话层,表示层,应用层)的最上层:应用层,浏览器向服务器经过http协议发送请求(request),而后服务器响应(response),其中在网络层会有TCP协议,有你们熟悉的"三次握手",相关的还有UDP协议,你们能够了解一下(OSI七层模型之后会单写)。 一次成功的http请求包含四步: 1,创建链接; 2,客户端发送http请求头; 3,服务器响应生成结果返回; 4,服务器端关闭链接,客户端解析,渲染页面; https与http相似,只是在传递信息过程当中采用了非对称和对称两种加密方式,使用前提是你申请了免费的或是购买了受浏览器信任的证书,其实就是一对密钥(公钥和私钥,不知我这么理解有没有错误),配置完成以后(这也能够写个小博文),打开网页就能够看到浏览器左上角显示https且是绿色的; 一次成功的https请求: 1,浏览器请求服务器; 2,服务器返回公钥(下面简称pub); 3,浏览器检查pub是否有效,有效,生成一个随机密钥(下面简称key),用pub把key加密后传递给服务器(data1); 4,服务器用私钥(下面简称pri)解密data1,获取key,把要返回的数据有key加密(data2)后返回给客户端; 5,客户端用key解密data2,获取返回的数据; 能够用下面这张图来讲明(图是找的):