1.再说说Nginx-HTTPS加密技术超文本传输??安全协议(HTTPS)是一种以安全为目标的HTTP通道。https由两部分组成:HTTP+SSL/TLS。在http的基础上增加了一层加密信息模块。服务器和客户端的信息都会经过TLS加密,传输的数据是加密数据。.为了解决HTTP协议的这些缺陷,就需要使用另一种协议:HTTPS。为了数据传输的安全,HTTPS在http的基础上增加了SSL协议。SSL依靠证书来验证身份并加密浏览器和服务器之间的通信。SSL证书是一种数字证书,它使用安全套接字层协议在浏览器和Web服务器之间建立安全通道,从而实现客户端和服务器之间数据信息的加密传输,保证双方传输信息的安全。派对。可被第三方窃听,用户可通过服务器证书验证所访问网站的真实性和可靠性。加密HTTPS和HTTP的区别:超文本传输??协议HTTP协议用于在网页浏览器和网站服务器之间传输信息。HTTP协议以明文形式发送内容,不提供任何加密数据。如果攻击者截获Web浏览器与网站服务器之间的传输报文中的信息,则可以直接读取。因此,http协议不适合传输一些敏感信息。HTTPS加密、解密、验证的过程如图所示:首先,客户端发送请求。服务端收到请求后,申请生成公钥和私钥,同时将公钥证书发送给客户端。客户端收到后,通过TLS进行解析和验证。如果证书没有问题,会在客户端生成一个加密的随机值,并将该随机值发送给服务器端。服务端收到后会用自己的私钥解密得到随机值,然后把这个随机值传过去。该值对称地加密内容。服务器将用私钥加密的信息发送给客户端。最后,客户端使用之前生成的私钥对服务器发送的信息进行解密,得到解密后的内容。1)客户端向服务器发起HTTPS请求,用户在浏览器中输入https网址,然后连接到Nginx服务器的443端口2)服务器采用https协议,有一套数字证书,可以自行配置或提交给证书管理机构申请。证书的本质是公钥和私钥。3)将公钥传送给客户端。证书中包含了很多信息,比如证书的颁发机构、过期时间等。4)客户端解析证书,客户端在最后的TLS完成后,会先验证公钥是否存在是否有效,如发证机构、过期时间等。如果出现异常,会弹出警告信息,提示证书有问题。如果证书没有问题,会随机生成一个值,然后用证书加密这个随机值5)将证书加密后的随机值发送给服务器,让服务器获取随机值,后续客户端和服务器端可以使用随机值进行加解密6)服务器端用私钥解密后,得到客户端发送的随机值,然后通过这个值对内容进行对称加密7)服务器端发送加密后的信息将私钥传给客户端8)客户端使用之前生成的私钥解密服务器得到发送信息的解密内容。2.Internet上使用SSL证书的安全通信是基于SSL/TLS协议的。SSL/TLS协议的基本思想是使用公钥加密,即客户端先向服务器索取公钥,然后使用公钥服务器收到密文后,用自己的解密私钥。通过这种加解密机制,可以保证所有的信息都是加密传输的,不能被窃听。同时,传输具有验证机制。一旦信息被篡改,可以立即被发现。最后,通过身份证明机制,可以防止身份被冒充。可见,SSL证书有两个主要功能:加密和身份认证。目前,市场上的SSL证书都是由第三方SSL证书颁发机构颁发的。常见且可靠的第三方SSL证书颁发机构包括DigiCert、GeoTrust、GlobalSign、Comodo等。根据不同的使用环境,SSL证书可分为以下几种类型:企业级:EV(ExtendedValidation)、OV(OrganizationValidation)?个人层面:IV(IdentityValidation)、DV(DomainValidation)。其中EV、OV、IV是需要付费的。企业用户推荐使用EV或OV证书,个人用户推荐使用IV证书。DV证书虽然是免费的,但是是最低端的SSL证书。不显示单位名称,也不能证明网站的真实身份。它只能验证域名的所有权,只能对信息的传输进行加密。适用于个人网站或非电子商务网站。3.使用OpenSSL生成私钥文件和CSR文件。在Nginx中配置HTTPS并不复杂。主要有两个步骤:签署第三方可信SSL证书和配置HTTPS,下面依次介绍。配置HTTPS需要使用私钥文件(.key结尾)和证书文件(.crt结尾),证书文件由第三方证书颁发机构颁发,第三方证书颁发机构必须颁发证书文件,您还需要向他们提供证书签名请求文件(以.csr结尾)。下面简单介绍一下私钥文件和csr文件。私钥文件:证书申请者生成的以.key结尾的文件。它是证书申请者的私钥文件,与证书中的公钥配对使用。HTTPS握手通信过程中,需要使用私钥解密客户端发送的证书公钥加密后的随机数信息。是HTTPS加密通信过程中非常重要的一个文件,配置HTTPS时会用到。CSR文件:CSR的全称是CerificateSigningRequest,即证书签名请求文件。该文件包含申请者的DN(DistinguishedName,标识名)和公钥信息。该文件由证书申请者生成,需要提供给第三方证书颁发机构。证书颁发机构得到CSR文件后,用其根证书的私钥对证书进行加密,生成CRT证书文件。CRT文件包含证书加密信息和申请人的DN和公钥信息。最后,第三方证书颁发机构将CRT文件发送给证书申请者,从而完成证书文件的申请流程。在申请SSL证书之前,证书申请人需要生成私钥文件和CSR文件。这两个文件可以通过openssl命令生成。操作如下:[root@iZ23sl33esbZ~]#opensslreq-new-newkeyrsa:2048-sha256-nodes-outiivey.csr-keyoutiivey.key-subj"/C=CN/ST=beijing/L=beijing/O=iiveyInc./OU=WebSecurity/CN=iivey.com”上面这条命令会生成一个CRS文件iivey.csr和一个私钥文件iivey.key。其中,相关字段含义如下:C字段:Country,表示单位所在国家,为两位数的国家缩写,如CN表示China?ST字段:State/Province,单位所在州或省?L字段:Locality,单位市/县?O字段:Organization,本站单位名称OU字段:OrganizationUnit,所属部门名称;也常用于显示其他证书相关信息,如证书类型、证书产品名称或认证类型或验证内容等。?CN字段:CommonName,网站域名。然后,将生成的CSR文件提供给CA机构。签名成功后,CA机构会发给我们一个CRT证书文件。假设这个文件是iivey.crt。获取SSL证书文件后,可以在Nginx的配置文件中。已配置HTTPS。4.Nginx下配置SSL证书,需要开启HTTPS服务。其实需要在Nginx上开启一个443监听端口。下面是Nginx下HTTPS服务的配置方法。这里只列出服务器部分的配置:server{listen443;server_namewww.iivey.com;indexindex.phpindex.html;root/data/webhtdocs/iivey;sslon;ssl_certificateiivey.crt;ssl_certificate_keyiivey.key;ssl_prefer_server_cipherson;ssl_protocolsTLSv1TLSv1.1TLSv1.2;ssl_ciphersHIGH:!aNULL:!MD5-addsXtionadd_header;-Content-Type-Optionsnosniff;add_headerX-Xss-Protection1;}简单介绍一下上面各个配置选项的含义:sslon:表示开启SSL功能。ssl_certificate:用于指定CRT文件的路径,可以是相对路径也可以是绝对路径。本例为相对路径,iivey.crt文件与nginx.conf放在同一目录下。ssl_certificate_key:用于指定密钥文件的路径,可以是相对路径也可以是绝对路径。本例为相对路径,iivey.key文件与nginx.conf放在同一目录下。ssl_prefer_server_cipherson:设置协商加密算法时,优先使用我们服务器的密码套件,而不是客户端浏览器的密码套件。ssl_protocols:该命令用于启动特定的加密协议,这里设置为“TLSv1TLSv1.1TLSv1.2”,TLSv1.1和TLSv1.2必须保证openssl版本大于等于openssl1.0.1,SSLv3也可以用,但是有不同的Lessexploited漏洞,所以现在很少用了。ssl_ciphers:选择密码套件和加密算法,不同浏览器支持的套件和顺序可能不同。这里选择默认即可。add_headerX-Frame-OptionsDENY:这是一个增强安全性的选项,这意味着减少点击劫持。add_headerX-Content-Type-Optionsnosniff:也是增强安全性的选项,意思是禁止服务器自动解析资源类型。add_headerX-Xss-Protection1:也是增强安全性的选项,也就是防止XSS攻击。5、验证HTTPS功能Nginx的https配置完成后,需要测试配置是否正常。这里有两种方法。第一种方式是直接通过浏览器访问https服务。这里使用Firefox浏览器进行测试。如果https配置正常如果是这种情况,应该直接打开页面,而不是如下界面:如果出现这个界面,说明https没有配置成功,需要检查https配置是否正确。而打开https页面后,可能还有另一种情况,如下图:这种现象是可以打开https界面,但是浏览器地址栏左侧的小锁是灰色的,并且有黄色感叹号,表示本网站页面可能引用了第三方网站的图片、js、css等资源文件。https认为页面引用第三方网站资源不安全,所以出现警告提示。解决这个问题很简单,只要把页面上引用第三方网站的资源文件全部下载到本地,然后通过本地路径引用即可。修改所有资源文件到本地服务器后,再次通过https访问,浏览器地址栏左侧的小锁自动变绿,感叹号消失,如下图:至此,https服务配置完毕nginx下一直运行正常。在浏览器中可以查看证书信息(证书厂商、证书颁发机构、证书有效期等),点击浏览器地址栏中的绿色锁头,选择查看证书,可以查看证书的详细信息,如下图所示:VerifySSLcertificatestatusisstillvalid还有一种方法,就是通过提供的在线网站进行验证。读者可以通过https://myssl.com/网站或https://www.ssllabs.com/ssltest/网站进行在线测试,可以更详细地测试SSL证书的状态、安全性、兼容性等方面.
