https加密过程详解:从原理到实践
一、引言
随着互联网技术的飞速发展,网络安全问题日益突出。
https作为一种安全的超文本传输协议,广泛应用于网页浏览、文件下载、在线支付等场景,为用户数据安全提供了重要保障。
本文将详细介绍https加密过程的原理和实践,帮助读者更好地理解网络安全原理及其重要性。
二、https概述
https是安全超文本传输协议(Hypertext Transfer ProtocolSecure)的简称,它是在http协议基础上添加了SSL/TLS协议的支持,通过SSL/TLS握手建立安全通信隧道的一种通信协议。
其主要目的是在客户端和服务器之间传输数据时提供安全保密和完整性保护。
三、https加密过程原理
https加密过程主要涉及到对称加密和非对称加密两种加密方式。下面详细介绍https加密过程的原理:
1. 对称加密与非对称加密
对称加密是指加密和解密使用同一个密钥的方式,其优点是加密速度快,但缺点是密钥传输的安全性难以保证。
非对称加密则使用一对密钥,一个用于加密,另一个用于解密,保证了密钥传输的安全性。
https主要使用非对称加密进行密钥交换,然后用对称加密进行数据传输。
2. SSL/TLS握手过程
(1)客户端向服务器发送请求时,会尝试与服务器建立SSL/TLS连接。
此时,服务器会回应一个公钥证书。
这个证书包含了服务器的公钥、证书颁发机构等信息。
(2)客户端接收到服务器回应的证书后,会验证证书的合法性。
如果证书合法,则继续建立连接;否则中断连接。
这一步主要是为了保证服务器的可信度。
(3)客户端生成一个随机数作为对称加密的密钥,并使用服务器的公钥对其进行加密,然后发送给服务器。
这一步是为了保证密钥传输的安全性。
(4)服务器接收到加密的密钥后,使用自己的私钥进行解密,得到对称加密的密钥。
此后,服务器和客户端都会使用这个密钥进行对称加密和解密操作。
这样,双方就可以建立一个安全的通信隧道。
四、https实践应用
了解了https加密过程的原理后,我们来看看在实际应用中如何配置和使用https。以下是几个关键步骤:
1. 获取SSL证书:可以通过购买第三方证书或自签名生成证书的方式获取SSL证书。第三方证书通常由权威的证书颁发机构签发,具有较高的可信度;自签名证书则适用于测试环境或内部使用。
2. 配置服务器:在服务器上安装SSL证书,并配置相关的HTTPS服务。不同的服务器软件(如Apache、Nginx等)配置方式略有不同,需要根据实际情况进行配置。
3. 客户端支持:浏览器或其他客户端应用需要支持HTTPS协议,以确保能够安全地与服务器进行通信。大多数现代浏览器都支持HTTPS协议。
4. 开发安全应用:在开发Web应用时,应使用HTTPS协议进行数据传输,以保证用户数据的安全性。同时,应避免在URL或Cookie中暴露敏感信息,以减少安全风险。
五、总结与展望
本文详细介绍了https加密过程的原理和实践应用。
https作为一种安全的通信协议,在互联网安全领域发挥着重要作用。
为了更好地保障网络安全和用户数据安全,我们应深入了解和学习https的原理和应用方式,将其应用于实际场景中。
随着技术的不断发展,https协议也在不断优化和完善,未来将有更多的新技术和安全机制加入其中,为网络安全保驾护航。
https加密是什么意思呢?
HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议:
HTTPS协议是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作,并返回网络上传送回的结果。
HTTPS实际上应用了Netscape的完全套接字层(SSL)作为HTTP应用层的子层。
(HTTPS使用端口443,而不是象HTTP那样使用端口80来和TCP/IP进行通信。
)SSL使用40 位关键字作为RC4流加密算法,这对于商业信息的加密是合适的。
HTTPS和SSL支持使用X.509数字认证,如果需要的话用户可以确认发送者是谁。
Https是保密性的超文本传送协议 就是使用ssl加密后的超文本传送协议. 浏览器都可以支持这种协议下的网络文档,前提是具备对方提供的安全证书.
引用内容: 使用 HTTPS 协议 对于安全通信,请使用安全协议 HTTPS 来代替 HTTP。
对于 Web 浏览器和 Tivoli License Manager 服务器间的通信,这通过在寻址以下服务器界面的登录页时使用 HTTPS 来完成: 管理服务器… slmadmin/login 运行时服务器… mruntime/login 对于与管理服务器的通信,运行时服务器使用以下格式的 文件中的 adminpath 属性中的值: adminpath =它是用于与管理服务器通信的地址和端口。
如果安装的服务器启用了 SSL,则该地址启动 https,且端口为安全端口 443。
如果在安装时没有启用SSL 且决定在以后启用它,则必须编辑 文件,并更改 adminpath 属性以使用 https和端口443。
文件存储在运行时服务器计算机上的以下位置中: \runtime\conf运行时和管理服务器间的安全通信需要密码以访问每个运行时服务器上的 数据库。
当安装运行时服务器的 SSL 选项时,安装向导将请求SSL 密码。
如果安装服务器时关闭了 SSL 且决定以后再启用它,则必须从 Tivoli License Manager 命令行使用sslpasswd 命令来设置 SSL 密码。
怎样在应用程序中使用SSL
HTTPS实际是SSL over HTTP, 该协议通过SSL在发送方把原始数据进行加密,在接收方解密,因此,所传送的数据不容易被网络黑客截获和破解。
本文介绍HTTPS的三种实现方法。
方法一 静态超链接这是目前网站中使用得较多的方法,也最简单。
在要求使用SSL进行传输的Web网页链接中直接标明使用HTTPS协议,以下是指向需要使用SSL的网页的超链接:SSL例子需要说明的是,在网页里的超链接如果使用相对路径的话,其默认启用协议与引用该超链接的网页或资源的传输协议相同,例如在某超链接“”的网页中包含如下两个超链接:SSL链接非SSL链接那么,第一个链接使用与“”相同的传输协议HTTPS,第二个链接使用本身所标识的协议HTTP。
使用静态超链接的好处是容易实现,不需要额外开发。
然而,它却不容易维护管理; 因为在一个完全使用HTTP协议访问的Web应用里,每个资源都存放在该应用特定根目录下的各个子目录里,资源的链接路径都使用相对路径,这样做是为了方便应用的迁移并且易于管理。
但假如该应用的某些资源要用到HTTPS协议,引用的链接就必须使用完整的路径,所以当应用迁移或需要更改URL中所涉及的任何部分如:域名、目录、文件名等,维护者都需要对每个超链接修改,工作量之大可想而知。
再者,如果客户在浏览器地址栏里手工输入HTTPS协议的资源,那么所有敏感机密数据在传输中就得不到保护,很容易被黑客截获和篡改!方法二 资源访问限制为了保护Web应用中的敏感数据,防止资源的非法访问和保证传输的安全性,Java Servlet 2.2规范定义了安全约束(Security-Constraint)元件,它用于指定一个或多个Web资源集的安全约束条件;用户数据约束(User-Data-Constraint)元件是安全约束元件的子类,它用于指定在客户端和容器之间传输的数据是如何被保护的。
用户数据约束元件还包括了传输保证(Transport-Guarantee)元件,它规定了客户机和服务器之间的通信必须是以下三种模式之一:None、Integral、Confidential。
None表示被指定的Web资源不需要任何传输保证;Integral表示客户机与服务器之间传送的数据在传送过程中不会被篡改; Confidential表示数据在传送过程中被加密。
大多数情况下,Integral或Confidential是使用SSL实现。
这里以BEA的WebLogic Server 6.1为例介绍其实现方法,WebLogic是一个性能卓越的J2EE服务器,它可以对所管理的Web资源,包括EJB、JSP、Servlet应用程序设置访问控制条款。
假设某个应用建立在Weblogic Server里的/mywebAPP目录下,其中一部分Servlets、JSPs要求使用SSL传输,那么可将它们都放在/mywebAPP/sslsource/目录里,然后编辑/secureAPP/Web-INF/文件,通过对的设置可达到对Web用户实现访问控制。
当Web用户试图通过HTTP访问/sslsource目录下的资源时,Weblogic Server就会查找里的访问约束定义,返回提示信息:Need SSL connection to access this resource。
资源访问限制与静态超链接结合使用,不仅继承了静态超链接方法的简单易用性,而且有效保护了敏感资源数据。
然而,这样就会存在一个问题: 假如Web客户使用HTTP协议访问需要使用SSL的网络资源时看到弹出的提示信息: Need SSL connection to access this resource,大部分人可能都不知道应该用HTTPS去访问该网页,造成的后果是用户会放弃访问该网页,这是Web应用服务提供商不愿意看到的事情。
方法三 链接重定向综观目前商业网站资源数据的交互访问,要求严格加密传输的数据只占其中一小部分,也就是说在一个具体Web应用中需要使用SSL的服务程序只占整体的一小部分。
那么,我们可以从应用开发方面考虑解决方法,对需要使用HTTPS协议的那部分JSPs、Servlets或EJBs进行处理,使程序本身在接收到访问请求时首先判断该请求使用的协议是否符合本程序的要求,即来访请求是否使用HTTPS协议,如果不是就将其访问协议重定向为HTTPS,这样就避免了客户使用HTTP协议访问要求使用HTTPS协议的Web资源时,看到错误提示信息无所适从的情况,这些处理对Web客户来说是透明的。
实现思想是:首先创建一个类,该类方法可以实现自动引导Web客户的访问请求使用HTTPS协议,每个要求使用SSL进行传输的Servlets或JSPs在程序开始时调用它进行协议重定向,最后才进行数据应用处理。
J2EE提供了两种链接重定向机制。
第一种机制是RequestDispatcher接口里的forward()方法。
使用MVC(Model-View-Controller)机制的Web应用通常都使用这个方法从Servlet转移请求到JSP。
但这种转向只能是同种协议间的转向,并不能重定向到不同的协议。
第二种机制是使用HTTPServletReponse接口里的sendRedirect()方法,它能使用任何协议重定向到任何URL,例如(“”);此外,我们还需使用到Java Servlet API中的两个方法:ServletRequest接口中的getScheme(),它用于获取访问请求使用的传输协议;HTTPUtils类中的getRequestUrl(),它用于获取访问请求的URL,要注意的是该方法在Servlet 2.3中已被移到HTTPServletRequest接口。
以下是实现协议重定向的基本步骤:1. 获取访问的请求所使用的协议;2. 如果请求协议符合被访问的Servlet所要求的协议,就说明已经使用HTTPS协议了,不需做任何处理;3. 如果不符合,使用Servlet所要求的协议(HTTPS)重定向到相同的URL。
例如,某Web用户使用HTTP协议访问要求使用HTTPS协议的资源BeSslServlet,敲入“URL:”,在执行BeSslServlet时首先使用ProcessSslServlet.processSsl()重定向到,然后 BeSslServlet与客户浏览器之间就通过HTTPS协议进行数据传输。
以上介绍的仅是最简单的例子,是为了对这种重定向的方法有个初步的认识。
假如想真正在Web应用中实现,还必须考虑如下几个问题:● 在Web应用中常常会用到GET或Post方法,访问请求的URL中就会带上一些查询字串,这些字串是使用getRequesUrl()时获取不到的,而且在重定向之后会丢失,所以必须在重定向之前将它们加入到新的URL里。
我们可以使用()来获取GET的查询字串,对于Post的Request参数,可以把它们转换成查询串再进行处理。
● 某些Web应用请求中会使用对象作为其属性,必须在重定向之前将这些属性保存在该Session中,以便重定向后使用。
● 大多数浏览器会把对同一个主机的不同端口的访问当作对不同的主机进行访问,分用不同的Session,为了使重定向后保留使用原来的Session,必须对应用服务器的Cookie 域名进行相应的设置。
以上问题均可在程序设计中解决。
通过程序自身实现协议重定向,就可以把要求严格保护的那部分资源与其他普通数据从逻辑上分开处理,使得要求使用SSL的资源和不需要使用SSL的资源各取所需,避免浪费网站的系统资源。
https加密是在哪一层
https加密是在传输层。
这层的功能包括是否选择差错恢复协议还是无差错恢复协议,及在同一主机上对不同应用的数据流的输入进行复用,还包括对收到的顺序不对的数据包的重新排序功能。
参考:HTTPS加密协议详解