揭秘HTTPS会话机制:如何确保安全通信的每一步
一、引言
随着互联网技术的不断发展,网络安全问题日益突出。
为了保障用户隐私和数据安全,HTTPS会话机制应运而生。
本文将详细解析HTTPS会话机制的原理,介绍如何确保安全通信的每一步,帮助读者深入了解HTTPS的工作原理及其在实际应用中的重要性。
二、HTTPS概述
HTTPS是一种通过计算机网络进行安全通信的传输协议。
它是在HTTP协议基础上,采用了SSL/TLS加密技术,对传输数据进行加密,从而保障通信安全。
HTTPS广泛用于网银、电商、社交媒体等需要保护用户隐私和交易安全的场景。
三、HTTPS会话机制
1. 会话建立
在HTTPS会话建立过程中,客户端和服务器首先通过握手过程确认彼此身份。
客户端发送请求时,会附带所支持的加密算法等信息。
服务器根据这些信息选择共同支持的加密算法,并生成一个唯一的会话密钥。
这个密钥将用于后续的数据加密传输。
2. 数据传输
在会话建立后,客户端和服务器开始进行数据传输。
所有传输的数据都被加密成密文,以确保数据在传输过程中的安全性。
只有拥有会话密钥的双方才能对密文进行解密,获取原始数据。
HTTPS还支持双向认证,即客户端可以验证服务器的身份,确保与真实的服务器进行通信。
四、HTTPS如何确保安全通信
1. SSL/TLS加密技术
HTTPS采用SSL/TLS加密技术,对传输数据进行加密处理。
SSL(Secure Socket Layer)和TLS(Transport Layer Security)是两种常用的加密技术,通过对数据进行加密和解密操作,确保数据在传输过程中的安全性。
2. 证书验证
在HTTPS通信过程中,服务器会向客户端提供一个数字证书,以证明服务器的身份。
数字证书由可信的第三方机构(如证书颁发机构CA)签发。
客户端在确认证书有效性后,才会与服务器进行通信,从而确保通信的可靠性。
3. 握手过程的安全性
在HTTPS握手过程中,双方通过交换加密算法、密钥协商等信息,确保通信过程的安全性。
握手过程中,还会进行一系列的安全校验,如检查证书是否过期、是否由可信任的CA签发等,以确保通信双方的身份真实性。
4. 完整性校验
除了加密技术外,HTTPS还采用数据完整性校验技术,如MAC(Message Authentication Code)等,确保数据在传输过程中没有被篡改。
通过对比数据的哈希值,通信双方可以检测数据是否完整、未被篡改。
五、HTTPS的优势与挑战
优势:
1. 数据加密:HTTPS采用加密技术,确保数据传输的安全性。
2. 身份验证:通过数字证书验证服务器身份,确保与真实的服务器进行通信。
3. 数据完整性:采用完整性校验技术,确保数据在传输过程中未被篡改。
挑战:
1. 计算资源消耗:加密和解密操作需要消耗大量的计算资源,可能导致性能瓶颈。
2. 证书管理:数字证书的管理和更新需要一定的成本和时间。
3. 兼容性问题:部分老旧设备或系统可能不支持HTTPS协议,需要进行升级或替换。
六、结论
HTTPS作为一种安全通信协议,通过SSL/TLS加密技术、证书验证、握手过程的安全性以及完整性校验等技术手段,为用户提供了安全可靠的通信环境。
随着网络技术的不断发展,HTTPS面临着计算资源消耗、证书管理以及兼容性问题等挑战。
因此,我们需要不断研究和改进相关技术,以适应网络安全需求的变化。
如何通过HTTPS方式访问web service
web service在企业应用中常常被用作不同系统之间的接口方式。
但是如果没有任何安全机制的话,显然是难以委以重任的。
比较直接的web service加密方式就是使用HTTPS方式(SSL证书加密)加密连接,并且只允许持有信任证书的客户端连接,即SSL双向认证。
这样就保证了连接来源的可信度以及数据在传输过程中没有被窃取或篡改。
通过HTTPS加密方式访问web service具体方法如下:【准备工作】(1)检查JDK的环境变量是否正确。
本文使用JDK 1.6(2)准备web服务器,这里选用TOMCAT 6.0(3)准备web service服务端和客户端。
【生成证书】这里用到的文件,这里存放在D:/SSL/文件夹内,其中D:/SSL/server/内的文件是要交给服务器用的,D:/SSL/client/内的文件是要交给客户端用的。
1生成服务端证书开始-运行-CMD-在dos窗口执行下执行命令:keytool -genkey -v -aliastomcat -keyalg RSA -keystore D:/SSL/server/ -dnameCN=127.0.0.1,OU=zlj,O=zlj,L=Peking,ST=Peking,C=CN -validity 3650-storepass zljzlj -keypass zljzlj说明:keytool 是JDK提供的证书生成工具,所有参数的用法参见keytool –help-genkey 创建新证书-v 详细信息-alias tomcat 以”tomcat”作为该证书的别名。
这里可以根据需要修改-keyalg RSA 指定算法-keystoreD:/SSL/server/ 保存路径及文件名-dnameCN=127.0.0.1,OU=zlj,O=zlj,L=Peking,ST=Peking,C=CN 证书发行者身份,这里的CN要与发布后的访问域名一致。
但由于这里是自签证书,如果在浏览器访问,仍然会有警告提示。
真正场景中建议申请CA机构(wosign)签发的SSL证书更安全。
-validity 3650证书有效期,单位为天-storepass zljzlj 证书的存取密码-keypass zljzlj 证书的私钥2 生成客户端证书执行命令:keytool ‐genkey ‐v ‐aliasclient ‐keyalg RSA ‐storetype PKCS12 ‐keystore D:/SSL/client/client.p12 ‐dnameCN=client,OU=zlj,O=zlj,L=bj,ST=bj,C=CN ‐validity 3650 ‐storepassclient ‐keypass client说明:参数说明同上。
这里的-dname 证书发行者身份可以和前面不同,到目前为止,这2个证书可以没有任何关系。
下面要做的工作才是建立2者之间的信任关系。
3 导出客户端证书执行命令:keytool ‐export ‐aliasclient ‐keystore D:/SSL/client/client.p12 ‐storetype PKCS12 ‐storepass client‐rfc ‐file D:/SSL/client/说明:-export 执行导出-file 导出文件的文件路径4 把客户端证书加入服务端证书信任列表执行命令:keytool ‐import ‐aliasclient ‐v ‐file D:/SSL/client/ ‐keystoreD:/SSL/server/ ‐storepass zljzl说明:参数说明同前。
这里提供的密码是服务端证书的存取密码。
5 导出服务端证书执行命令:keytool -export -aliastomcat -keystore D:/SSL/server/ -storepass zljzlj -rfc -fileD:/SSL/server/说明:把服务端证书导出。
这里提供的密码也是服务端证书的密码。
6 生成客户端信任列表执行命令:keytool -import -fileD:/SSL/server/ -storepass zljzlj -keystoreD:/SSL/client/ -alias tomcat –noprompt说明:让客户端信任服务端证书【 配置服务端为只允许HTTPS连接】1 配置Tomcat 目录下的/conf/代码:<Connectorport=8443 protocol=HTTP/1.1 SSLEnabled=truemaxThreads=150 scheme=https secure=trueclientAuth=true sslProtocol=TLSkeystoreFile=D:/SSL/server/ keystorePass=zljzljtruststoreFile=D:/SSL/server/ truststorePass=zljzlj />说明:在里面这段内容本来是被注释掉的,如果想使用https的默认端口443,请修改这里的port参数。
其中的clientAuth=true 指定了双向证书认证。
采用SSL协议保护对Web服务的访问,按照提示完成配置步骤的记录
保证通信进程安全的一个关键步骤是对通信双方进行认证,SSL握手子协议负责这一进程处理:客户端向服务器提交有效证书,服务器采用公共密钥算法对证书信息进行
HTTPS请求证书时候的握手是SSL/ TLS 还是TCP的握手?
1. HTTPS是基于SSL安全连接的HTTP协议。
HTTPS通过SSL提供的数据加密、身份验证和消息完整性验证等安全机制,为Web访问提供了安全性保证,广泛应用于网上银行、电子商务等领域。
此图为HTTPS在网上银行中的应用。
某银行为了方便客户,提供了网上银行业务,客户可以通过访问银行的Web服务器进行帐户查询、转帐等。
通过在客户和银行的Web服务器之间建立SSL连接,可以保证客户的信息不被非法窃取。
2.只需要验证SSL服务器身份,不需要验证SSL客户端身份时,SSL的握手过程为:(1) SSL客户端通过Client Hello消息将它支持的SSL版本、加密算法、密钥交换算法、MAC算法等信息发送给SSL服务器。
(2) SSL服务器确定本次通信采用的SSL版本和加密套件,并通过Server Hello消息通知给SSL客户端。
如果SSL服务器允许SSL客户端在以后的通信中重用本次会话,则SSL服务器会为本次会话分配会话ID,并通过Server Hello消息发送给SSL客户端。
(3) SSL服务器将携带自己公钥信息的数字证书通过Certificate消息发送给SSL客户端。
(4) SSL服务器发送Server Hello Done消息,通知SSL客户端版本和加密套件协商结束,开始进行密钥交换。
(5) SSL客户端验证SSL服务器的证书合法后,利用证书中的公钥加密SSL客户端随机生成的premaster secret,并通过Client Key Exchange消息发送给SSL服务器。
(6) SSL客户端发送Change Cipher Spec消息,通知SSL服务器后续报文将采用协商好的密钥和加密套件进行加密和MAC计算。
(7) SSL客户端计算已交互的握手消息(除Change Cipher Spec消息外所有已交互的消息)的Hash值,利用协商好的密钥和加密套件处理Hash值(计算并添加MAC值、加密等),并通过Finished消息发送给SSL服务器。
SSL服务器利用同样的方法计算已交互的握手消息的Hash值,并与Finished消息的解密结果比较,如果二者相同,且MAC值验证成功,则证明密钥和加密套件协商成功。
(8) 同样地,SSL服务器发送Change Cipher Spec消息,通知SSL客户端后续报文将采用协商好的密钥和加密套件进行加密和MAC计算。
(9) SSL服务器计算已交互的握手消息的Hash值,利用协商好的密钥和加密套件处理Hash值(计算并添加MAC值、加密等),并通过Finished消息发送给SSL客户端。
SSL客户端利用同样的方法计算已交互的握手消息的Hash值,并与Finished消息的解密结果比较,如果二者相同,且MAC值验证成功,则证明密钥和加密套件协商成功。
SSL客户端接收到SSL服务器发送的Finished消息后,如果解密成功,则可以判断SSL服务器是数字证书的拥有者,即SSL服务器身份验证成功,因为只有拥有私钥的SSL服务器才能从Client Key Exchange消息中解密得到premaster secret,从而间接地实现了SSL客户端对SSL服务器的身份验证。
& 说明:l Change Cipher Spec消息属于SSL密码变化协议,其他握手过程交互的消息均属于SSL握手协议,统称为SSL握手消息。
l 计算Hash值,指的是利用Hash算法(MD5或SHA)将任意长度的数据转换为固定长度的数据。

