《大型网站HTTPS部署实践点拨》要点:
本文介绍了大型网站HTTPS部署实践点拨,希望对您有用。如果有疑问,可以联系我们。
作者介绍
战学超,青航数据架构师.曾任职于NEC软件、海尔B2B平台巨商汇,负责企业数据平台构建、B2B电商平台数据管理与搭建.拥有丰富DBA、系统运维架构经验,擅长数据库、数据平台搭建、私有云部署、自动化运维等.
但是网站使用了HTTPS加密之后,有朋友提出使用F12还能看到用户名密码,例如:
这是因为HTTPS(SSL)加密是发生在应用层与传输层之间,所以在传输层看到的数据才是经过加密的,而我们捕捉到的http post,是应用层的数据,此时还没有经过加密.加密数据只有客户端和服务器端才能得到明文,客户端到服务端的通信过程是安全的.及时数据在传输过程中被抓包,由于是加密数据也难以破解,从而保护数据在传输过程中的安全性.
其实除HTTPS加密之外,还有控件加密,用户需要下载安全控件才能输入密码,这在银行系统,支付宝页面都会经常遇到:
通过加密控件可以解决在应用层的http post的明文密码.
HTTPS是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块.服务端和客户端的信息传输都会通过SSL/TLS进行加密,所以传输的数据都是加密后的数据.具体是如何进行加密、解密、验证的,且看下图:
首先客户端发起一个HTTPS的请求给服务器端,并且将浏览器自己支持的一套加密规则一起发送给服务端.
采用HTTPS协议的服务器端要有一套数字证书,可以自己制作,也可以向组织申请.区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书一般不会弹出提示页面.这套证书其实就是一对公钥和私钥.一般情况下可以快速申请免费的ssl证书,而尽量避免自己生产证书.
服务端接收到客户端的HTTPS请求后,会选择出一种加密算法和HASH算法,以证书的形式返回给客户端,证书还包含了公钥、颁证机构、网址、失效日期等信息.
服务器端将证书信息传送会客户端.
这部分工作是由客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题.如果证书没有问题,那么就生成一个随即值.然后用证书对该随机值进行加密,一般证书验证通过后,在浏览器的地址栏会加上一把小锁.
这部分传送的是客户端用证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密.
服务端用私钥解密后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密.所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够复杂,私钥够复杂,数据就够安全.
这部分信息是服务端用私钥加密后的信息,可以在客户端被还原.
客户端用之前生成的私钥解密服务端传过来的信息,获取了解密后的内容.因为这串密钥只有客户端和服务端知道,所以即使中间请求被拦截、数据被抓包也是没法解密数据的,以此保证了通信的安全.
此外还可以自动生成自签名证书,自签名证书一般不会被浏览器验证通过,所以很少在生产环境中出现,一般在内部测试环境经常用到.
一般情况下不同的证书,认证等级、显示图标不同,在域名的支持下、价格、保额费用上也不同:
SSL证书厂商的选择这里不再做过多推荐,总的原则是越大的厂商越可靠.选择的厂商一定要提前调查好是否被信任. 如之前的沃通事件就导致很多公司联系沃通更换新证书后才被浏览器继续信任.
首先在购买证书的时候,证书厂商都会在其帮助文档中详述证书部署指南,一般来说按照帮助文档一步一步部署即可.
一般会有Apache、IIS、Nginx、Tomcat等多种部署方式,这里以Nginx为例做简单介绍.
首先是证书的申请和下载.作者个人自己网站的正式是通过腾讯云提供的免费SSL正式申请服务申请的:
下载后如下:
在Nginx的部署目录下的conf下建立sslkey文件夹,将上述下载后的Nginx文件下的1_www.fineops.com_bundle.crt 和2_www.fineops.com.key两个文件上传到sslkey中.修改nginx.conf文件,按照腾讯云帮助文档操作即可.
这里需要注意,一般证书部署后,需要设置一些http自动跳转到https,这一般在帮助文档中不会有.可以采用以下几种方式:
我们这里采用了proxy_redirect的方式,在nginx中配置:proxy_redirect http://www.fineops.com:443/ https://www.fineops.com/;实现自动跳转至https.
在HTTP转HTTPS的过程中,主要注意页面跳转、第三方接口、静态资源CDN等方面在转HTTPS之后的测试,确保跳转和加载没有问题.
文章来自微信公众号:DBAplus社群
转载请注明本页网址:
http://www.vephp.com/jiaocheng/2208.html