Https协议

Https协议要点:

  • Https协议原理
  • SSL、TLS
  • 部署Https Web

Https协议原理

摘要认证和签名认证能够解决信息传输两端的验证问题,但是对于一些敏感信息(用户名、密码、个人隐私数据)还是无法保障安全,因为这些信息在http协议下是以明文形式传输,存在被拦截的风险。

https协议的全称基于SSL的http协议,就是http的安全版。https协议栈如下:
在这里插入图片描述

即https协议是在Http应用层与TCP传输层间加了一层安全层,信息在传输之前先经过SSL或TLS安全层加密,然后再传输,这样第三方就算拦截了信息也是加密后的密文,无法解密就没法利用。通常证书保存在应用服务端机器上。

SSL、TLS

SSL全称Secure Sockets Layer,即安全套接层,一种网络安全协议。与应用层协议无关,建立在TCP层之上,因此传输前就已经完成了加密算法、通信密钥协商、服务端客户端认证等工作,保障通信的私密性。

SSL的继任者TLS全称Transport Layer Security,传输层安全协议,基于SSL协议的通用化协议,逐步将取代SSL。

SSL协议分为两层:

  • Record Protocol,记录协议;
  • Handshake Protocol,握手协议;

记录协议主要提供数据封装、加密解密、压缩、校验等功能;握手协议主要进行加密算法协商、密钥交换、认证等。

具体的过程本文不做介绍,想了解的去看书。

Java也提供了SSL开发的解决方案JSSE(Java Security Socket Extension),里面有丰富的API来完成SSL的使用,常见的几个如:SSLContext、SSLSocket、SSLServerSocket与Socket请求响应区别并不大。

部署Https Web

1、Tomcat单向认证部署

单向认证即客户端通过服务端证书验证服务端身份,仅需服务端证书。

修改tomcat配置

cd tomcat/conf
vi server.xml

样例如下,找到https配置这行:

1 <!--
2     <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
3                maxThreads="150" scheme="https" secure="true"
4                clientAuth="false" sslProtocol="TLS" />
5     -->

去掉注释,修改为:

1 <Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"  
2            maxThreads="150" scheme="https" secure="true"  
3            clientAuth="false" sslProtocol="TLS"   
4        	 keystoreFile="g:\tomcat.keystore"  
5        	 keystorePass="123456" 
6		 	 keystoreType="pkcs12"/> 

指定单向认证,证书路径、密码、格式。如果443端口未开启,则需要手动开启,可能需要安装authbind。

配置完后启动tomcat即可,打开网页提示证书不被信任,将证书导入浏览器,然后配置host即可。

2、Tomcat双向认证部署

双向认证即客户端通过服务端证书验证服务端身份,服务端也要验证客户端身份,需要存在两份证书。

1 <!--
2     <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
3                maxThreads="150" scheme="https" secure="true"
4                clientAuth="false" sslProtocol="TLS" />
5     -->

去掉注释,修改为:

1 <Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"  
2            maxThreads="150" scheme="https" secure="true"  
3            clientAuth="true" sslProtocol="TLS"   
4        	 keystoreFile="g:\tomcat.keystore"  
5        	 keystorePass="123456" 
6		 	 keystoreType="pkcs12"
7			 truststoreFile="g:\tomcat.keystore"  
8        	 truststorePass="123456" 
9		 	 truststoreType="jks"/> 

双向认证需要开启客户端认证clientAuth=true,然后指定服务端证书路径、密码、格式,信任库地址,利用信任库地址中的根证书,服务端才能客户端证书进行识别。如果443端口未开启,则需要手动开启,可能需要安装authbind。

配置完后启动tomcat即可,浏览器需要导入客户端证书与私钥keystore。然后才能正常浏览网页。

安全级别在某些特殊场景,如大额转账等,为了更高级别安全,部分银行可能会给用户发USB key,USB key与网络隔离,线下保存。

总的来说https已经成为安全通信的工业标准。若文中的说法有问题,理解错误,欢迎大家指出。

参考资源

1、大型分布式网站构架设计与实践-page213

2、配置Tomcat使用https协议

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值