
http升级https最佳实践分享
在大中型企业的信息化建设中,有多种不同类型的运营系统和各种后台接口服务,为业务部门来提供数字化管理。使用方需要通过域名访问各类系统,系统之间又通过域名来实现数据传输,作为内部网络访问的系统,一般使用HTTP协议,对外系统由于在公网访问,需要优先考虑系统的安全性,大部分都会升级至HTTPS协议。
图-1 HTTP与HTTPS
在常用的浏览器中,如谷歌的Chrome浏览器在近几年的版本中默认使用了更安全的HTTPS协议,这就导致了长期使用Chrome浏览器访问HTTP系统的用户,由于不理解浏览器方面的特性,误认为是系统本身出了问题,进而产生了许多系统不可用的投诉。

图-2 HTTPS请HTTP系统的错误提示
此问题是因为长期缺少统一的HTTP/HTTPS的使用规范和标准而产生的。各种历史包袱的积累和各系统域名之间请求的网状调用模式,导致多个系统从HTTP到HTTPS的升级过程,产生了较高的复杂度。从技术趋势方面保证协议的统一升级HTTPS是必须的;从安全合规角度更推荐系统使用HTTPS;从技术落地方案评估HTTP升级至HTTPS方案也是可行的。在落地技术方案的过程中,首先要制定申请新域名的标准规范,明确新系统上线的域名必须使用HTTPS,再对现有HTTP系统分批次进行改造,最后在测试验收通过后上线生产环境。一、HTTP与HTTPS协议区别
HTTP:HTTP协议即超文本传输协议,HTTP协议和TCP/IP协议族内的其他众多的协议相同, 用于客户端和服务器之间的通信。HTTPS:HTTPS是身披SSL外壳的HTTP,是一种通过计算机网络进行安全通信的传输协议,经由HTTP进行通信,利用SSL/TLS建立全信道,加密数据包。HTTPS使用的主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性。图-3 HTTP与HTTP区别
二、HTTP协议升级到HTTPS协议步骤
- 获取SSL证书:从SSL证书颁发机构(CA)获取SSL证书。如测试环境可用选择自签名证书,生产环境需要购买经过验证的证书。
- 安装SSL证书:将获取到的SSL证书安装到WEB服务器上,具体安装步骤可能会因不同的WEB服务器类型会有所差异。
- 配置WEB服务器:修改WEB服务器的配置文件,启用HTTPS协议并配置SSL证书和私钥的路径, 例如Apache、Nginx等不同的Web服务器具体配置方法也有所不同。
- 重定向HTTP请求:确保所有访问都通过HTTPS进行,需要配置一个重定向规则,将所有HTTP重定向到HTTPS,防止用户在浏览器地址栏中输入HTTP地址而导致安全问题。
- 更新网站链接:修改网站页面中包含的图片、样式表、脚本等资源的链接地址和页面中的内部和外部链接,确保所有链接都使用HTTPS协议。
- 更新网站地图和搜索引擎:如提交了网站地图给搜索引擎的网站,确保更新网站地图中的URL和搜索引擎中的索引,以避免搜索出现重复索引或搜索排名下降的情况。
- 测试和监控:在升级HTTPS后要对系统进行全面测试验证,确保HTTPS配置正确,要实时监控系统的安全性和性能,出现问题时要及时解决。
作为单一独立的系统域名,上述步骤操作是可行的,但是对于真实的生产环境,会存在几十个甚至上百个域名之间的复杂调用,也就存在很多特殊的场景,例如:场景A:一个域名对应多个后台子服务。
场景B:多个域名对应一个后台子服务。
对于复杂的场景要根据实际情况分别制定出不同的升级HTTPS策略,以保证测试环境和生产环境平滑升级。同时还需要考虑在升级过程中不能影响在行项目的整体进度,如测试环境不可用引起QA无法开展工作,接口服务请求不通而影响开发过程中的调试工作等。对不同场景的系统域名分别制定具体的升级HTTPS方案,主要可以通过六个阶段来保证完成升级HTTPS的工作。在升级HTTPS过程中,HTTPS协议对性能的影响也是需要考虑的,主要包括以下几个方面:
- 请求延迟增加:由于需要进行加密和解密操作,需要额外的计算资源和时间资源,这也使HTTPS请求的响应时间通常会比HTTP请求更长。
- 带宽消耗增加:在传输过程中,HTTPS使用SSL/TLS协议进行加密传输增加加数据的大小,会占用更多的带宽,从而可能降低整体的网络吞吐量。
- 服务器负载增加:由于HTTPS的加密和解密操作,服务器需要更多的CPU资源来处理这些任务,在高并发的场景下可能导致服务器的性能下降。
- 证书验证开销:HTTPS在客户端验证服务器证书是否有效的过程,包括了证书链验证、签名验证等步骤,会增加额外的请求延迟。
- 握手过程开销:HTTPS建立连接时需要进行一次握手的过程,包括了密钥交换、证书验证等步骤,握手过程的时间开销也会影响性能。
尽管HTTPS带来了一些性能开销,但是可以提供更好的安全性和隐私保护。对于敏感信息传输HTTPS是必要的选择,对于性能问题,可以选择更高效的加密算法可以减少计算开销;使用会话复用技术来减少握手次数;在传输数据时启用压缩算法;优化网络连接等多个方面来优化,在高并发场景下可通过服务器集群的横向扩容,增加更多的服务器资源来提升请求的处理能力,从而提高服务的性能。