当前时间:

[ypre] [h1]一、认识HTTPS[/h1] [pre] [h2]1、什么是Https[/h2] 在说HTTPS之前先说说什么是HTTP,HTTP就是我们平时浏览网页时候使用的一种协议。HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全。为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。 [h2]2、Https到底安全吗?[/h2] 答案是肯定的,非常安全,谷歌公司已经行动起来要大力推广HTTPS的使用,诸如银行也在使用https,我们在登陆网上银行交易时需要插入U盾双向认证更安全。 [h2]3、Https原理是什么[/h2] [pre] [h3]3.1SSL/TLS[/h3] 为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,SSL是表示层的一个加密/解密协议。网景公司开发过SSL3.0之前的版本,目前主导权已转移到IETF(Internet 工程任务组)手中,IETF以SSL3.0位基准,后又制定了TLS1.0、TLS1.1、TLS1.2,实际上我们现在的HTTPS都是用的TLS协议,但是由于SSL出现的时间比较早,并且依旧被现在浏览器所支持,因此SSL依然是HTTPS的代名词,但无论是TLS还是SSL都是上个世纪的事情,SSL最后一个版本是3.0,今后TLS将会继承SSL优良血统继续为我们进行加密服务。 [h3]3.2加密技术[/h3] 这里一共涉及两种加密方法。 公开密钥加密(非对称密钥加密):加密和解密两个算法,前者公开,又称为公开密钥;后者保密,又称为私有密钥。 共享密钥加密(对称密钥加密):加密和解密用同一个算法。 SSL就是使用的公开密钥加密(非对称秘钥加密)对通信线路进行加密。 [h3]3.3Https具体通信过程[/h3] a、浏览器将自己支持的一套加密规则发送给网站服务器(通过公开密钥加密的方式)。 b、网站服务器从中选出一组加密算法与HASH算法(也是一种加密算法,如前面提及过的MD5,SHA1等),并将自己的身份信息以证书的形式发回给浏览器。证书里面包含了网站地址,加密公开密钥,以及证书的颁发机构等信息。 c、获得网站证书之后浏览器要做以下工作: 验证证书的合法性(颁发证书的机构是否合法,证书中包含的网站地址是否与正在访问的地址一致等),如果证书受信任,则浏览器栏里面会显示一个小锁头,否则会给出证书 不受信的提示。 如果证书受信任,或者是用户接受了不受信的证书,浏览器会生成一串随机数的密码,并用证书中提供的公钥加密。 使用约定好的HASH计算握手消息,并使用生成的随机数对消息进行加密,最后将之前生成的所有信息发送给网站服务器。 d、网站接收浏览器发来的数据之后要做以下的操作: 使用自己的私有密钥将信息解密取出密码,使用密码解密浏览器发来的握手消息,并验证HASH是否与浏览器发来的一致。 使用密码加密一段握手消息,发送给浏览器。 e、浏览器解密并计算握手消息的HASH,如果与服务端发来的HASH一致,此时握手过程结束,之后所有的通信数据将由之前浏览器生成的随机密码并利用共享加密算法进行加密。 [h3]3.4一张图搞明白[/h3] img[https://yuqh.vip/FlGsComTn3kd_lon9csaVrtUKDEh] [/pre] [h2]4、为什么要使用Https[/h2] [pre] [h3]4.1HTTP的缺点[/h3] a、通信使用明文(不加密),内容可能被窃听。 b、不验证通信双方的身份,因此可能遭遇伪装。 c、无法证明报文的完整性,所以有可能已被篡改。 其实除此之外,HTTP本身还有很多缺点。 [h3]4.2Https的优点[/h3] a、HTTPS = HTTP + 加密 + 认证 + 完整性保护 b、HTTPS是身披SSL/TLS外壳的HTTP 原先的HTTP是http协议和tcp协议合作。现在的HTTPS是http协议先和ssl协议合作,ssl在和tcp协议合作。 [/pre] [h2]5、 相关链接[/h2] a(https://www.cnblogs.com/zhangshitong/p/6478721.html)[https://www.cnblogs.com/zhangshitong/p/6478721.html] [/pre] [h1]二、实现HTTPS[/h1] [pre] [h2]1、首先要有证书[/h2] [pre] [h3]1.1CA是什么[/h3] CA(Certificate Authority),即证书认证机构,它的作用就是提供证书(即服务器证书,由域名、公司信息、序列号和签名信息组成)加强服务端和客户端之间信息交互的安全性,以及证书运维相关服务。任何个体/组织都可以扮演 CA 的角色,难的是你要能得到全世界各大操作系统、浏览器等的默认信任,能得到他们的默认信任,你也可以自己开一家CA公司了,这类证书通常叫做根证书。浏览器默认信任的 CA 大厂商有很多,比如 Symantec赛门铁克、Comodo、Godaddy、GolbalSign(百度微博等都是它签发的) 和 Digicert。 [h3]1.2证书分类[/h3] SSL 证书按大类一般可分为DV SSL 、OV SSL、EV SSL证书,又叫域名型、企业型、增强型证书: img[https://yuqh.vip/FhPZoB3k347YZGZqWpEVLHvhfeRs] DV SSL(Domain Validation),域名型SSL证书,证书颁布机构只对域名的所有者进行在线检查,只要你能证明你是这个域名的所有者就可以给你颁发证书,不会校验网站的资质,哪怕你是个黄赌毒网站也可以,个人网站、非盈利项目、开源项目等用域名型证书足矣; OV SSL(Organization Validation),企业型SSL证书,需要购买者提交组织机构资料和单位授权信等在官方注册的凭证,证书颁发机构在签发 SSL 证书前不仅仅要检验域名所有权,还必须对这些资料的真实合法性进行多方查验,只有通过验证的才能颁发 SSL 证书;百度是OV EV SSL(Extended Validation),增强型SSL证书(EV SSL),验证流程更加具体详细,验证步骤更多,这样一来证书所绑定的网站就更加的可靠、可信。它跟普通SSL证书的区别是浏览器的地址栏变绿,如果是不受信的 SSL 证书则拒绝显示,如果是钓鱼网站,地址栏则会变成红色,以警示用户。github是EV [h3]1.3证书格式[/h3] a、Tomcat、Weblogic、JBoss等Web服务软件,一般使用JDK自带的Keytool工具,生成Java Keystore(JKS)格式的证书文件。 b、Apache、Nginx等Web服务软件,一般使用OpenSSL工具提供的密码库,生成 .key、.crt等格式的证书文件。 c、IBM 的 Web 服务产品,如 Websphere、IBM Http Server(IHS)等,一般使用 IBM 产品自带的 iKeyman 工具,生成 KDB 格式的证书文件。 d、微软的IIS使用Windows自带的证书库生成pfx格式的证书文件。 格式转换及相关文档 a(https://help.aliyun.com/knowledge_detail/42214.html)[https://help.aliyun.com/knowledge_detail/42214.html] [h3]1.4证书申请[/h3] 对我们而言DV证书已经足够满足我们需求,下证快而且有免费版 下面是几个免费证书CA认证公司 Let's Encrypt:获得Mozilla、微软等主要浏览器厂商的根授信,出现的目的就是为了推广HTTPS,缺点是只有3个月有效期,过期需续签; TrustAsia亚洲诚信; StartSSL免费DV证书:因丑闻被主流浏览器封杀,一般不建议; Wosign(沃通)免费DV证书:同上,被各大浏览器封杀,基本可以无视了; 我们不需要直接在这些CA公司申请,目前腾讯云可以免费申请方便快捷: a(https://console.qcloud.com/ssl)[https://console.qcloud.com/ssl] img[https://yuqh.vip/Flb54sjauSwD38QCqytSBWdrmONj] img[https://yuqh.vip/FnK7GdiHW0PYRDg7CZYzBztHHhNK] 这是我申请下载下来的证书,一共四种非常全 img[https://yuqh.vip/FvZzQo70r262zEO5qNW1wp53Gf_0] [/pre] [h2]2、域名验证[/h2] 申请完证书需要域名验证,相关文档请查看 a(https://cloud.tencent.com/document/product/400/4142#2.E3.80.81.E6.89.8B.E5.8A.A8dns.E9.AA.8C.E8.AF.81)[https://cloud.tencent.com/document/product/400/4142#2.E3.80.81.E6.89.8B.E5.8A.A8dns.E9.AA.8C.E8.AF.81] [h2]3、证书安装[/h2] 该文档一共讲述四种安装方式,非常详细 a(https://cloud.tencent.com/document/product/400/4143#2.-nginx-.E8.AF.81.E4.B9.A6.E9.83.A8.E7.BD.B2)[https://cloud.tencent.com/document/product/400/4143#2.-nginx-.E8.AF.81.E4.B9.A6.E9.83.A8.E7.BD.B2] a. Apache 2.x 证书部署 b. Nginx 证书部署 c. IIS 证书部署 d. Tomcat 证书部署 [h2]4、Nginx安装SSL模块[/h2] [ypre] ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_modul 这里如果你是在已经安装过Nginx下安装模块一定不要make install 只需make 生成新的nginx文件即可,不然会覆盖原来 make完成后只需复制objs文件夹下的nginx文件到 sbin目录下替换,注意复制前需要停止nginx服务 查看nginx安装模块命令:./nginx -V 测试是否安装成功命令:./nginx -t img[https://yuqh.vip/FjLjuhrV7rJgMVNIgXvw50O1tGta] img[https://yuqh.vip/Fq6PpivjMkNFm3Si2tatoJxYqJvP] img[https://yuqh.vip/FkuFXqY5NpvyEsCL8x4R13pu8tr_] 到此Https升级完成看下效果吧 img[https://yuqh.vip/FukYDLelHciX2tuIPCWXcY3qs1S9] [/ypre] [/pre] [/ypre]

讲述Https原理及Nginx实现

Nginx HTTPS
2 431
VIP3 2018-07-12 10:04:13
回复区