前言
随着网络应用的不断深入,特别是电子商务应用的普及,对网络应用的安全提出了许多新的和更高的要求。在Java及J2EE应用系统平台环境中,提供了多层次和多种形式的安全技术的支持,从而可以在一定的程度上保证应用系统的安全性。比如,将Web应用中的客户端和Web服务器端之间的通讯连接方式从Http方式改变为Https方式,则是对Web 应用在协议层次的安全保护技术——Https是在协议层对Http的再次封装,加入了SSL/TLS等相关的技术。
作者根据自身多年的软件开发实践和经验总结,结合多年的IT职业培训的教学和高校软件学院一线的教学工作体验,在本系列文档中通过具体的程序代码示例为读者介绍Java 及J2EE应用系统平台环境中的安全相关的应用技术。主要的目的是希望能够将作者在项目开发中所涉及的安全应用技术进行总结和提炼,以成功的经验或者失败的教训为读者减少软件开发中由于安全技术的欠缺而导致应用系统在使用中所带来的各种风险,同时也为高校师生总结出Java及J2EE应用系统平台环境中的相关安全技术,增强和培养软件专业的学生对应用系统安全技术的关注度和提高对相关技术的应用能力。
Https的全称为安全超文本传输协议,它是由Netscape公司开发并内置于其浏览器中,用于对数据进行压缩和解压缩操作的一种安全的协议。Https协议实际上应用了Netscape 公司所研制的安全套接字层(SSL)协议作为HTTP应用层的子层协议。在标准状况下,Https协议使用443端口,而不是象Http那样使用标准的80端口和TCP/IP进行通信。
学习java的学习方法JDK系统中的命令行工具程序可以用来帮助开发人员创建出相关的数字证书,在创建数字证书时,需要填写与数字证书相关的一些信息和证书对应的私钥密码。这些信息可以采用交互式的方式在提示过程中输入或者采用命令参数的方式预先给定;服务器端的有效数字证书的主要作用不仅仅在通讯的信息加密处理的应用中,更大地体现在对服务器可信任的验证,从而避免访问者被“钓鱼”网站欺骗。
本文档主要涉及Https及keytool命令工具的技术介绍、Https相关的技术基础和JDK中的命令工具的使用示例,在Tomcat服务器中如何配置实现Https的连接、测试所配置定义的Https实现的效果等方面的内容。
杨教授大学堂精心创作有系列化的优秀程序员职业提升必读技术资料,这些资料将系统地从软件设计和开发实现的“设计思想”、“管理策略”、“技术实现”和“经验方法”等方面与读者进行充分的交流,涉及作者对软件开发设计思想和原则、课程设计、项目实训、软件实现技术等方面的学习心得体会和应用技巧、经验总结。
本文目录
1.1Https及keytool命令工具 (3)
1.1.1Https技术基础 (3)
1.1.2JDK中的命令工具 (6)
1.2在Tomcat中配置实现Https请求连接 (9)
1.2.1Https请求连接的配置定义过程 (11)
1.2.2测试所配置实现的Https的应用效果 (14)
1.1Https及keytool命令工具
1.1.1Https技术基础
1、Https协议介绍
(1)Https是Hypertext Transfer Protocol over Secure Socket Layer的缩写
Https的全称为安全超文本传输协议,它是由Netscape公司开发并内置于其浏览器中,用于对数据进行压缩和解压缩操作的一种安全的协议。
(2)它应用SSL协议作为HTTP应用层的子层协议
Https协议实际上应用了Netscape公司所研制的安全套接字层(SSL)协议作为HTTP应用层的子层协议。在标准状况下,Https协议使用443端口,而不是象Http那样使用标准的80端口和TCP/IP进行通信。
2、Https协议的技术特性
(1)SSL使用40 位关键字作为RC4流加密算法,这对于商业信息的加密是合适的。
(2)Https和SSL都支持使用X.509的数字认证,从而可以保证客户端的用户可以确认信息的发送者。(3)Https是以安全为目标的Http通道,或者说它就是Http的安全版——即在Http下加入了SSL层。因此,Https协议的安全基础是SSL协议。
3、Https和Http的主要区别
(1)Https协议需要应用在CA(Certificate Authority,证书授权机构)处申请相关的证书CA认证中心主要负责签发、管理和认证数字证书的机构,是基于国际互联网平台建立的一个公正,权威,可信赖的第三方组织机构。而各个CA认证中心之间是一个树状结构的组织(根CA认证中心是有多个的,也就是说会有多棵这样的结构树),其中的根CA认证中心可以授权多个二级的CA认证中心,同理二级的CA认证中心也可以再授权多个3级的CA认证中心。
对于数字证书申请人,可以向根CA认证中心或者二级、三级的CA认证中心申请相关的数字证书,这都是可以的和没有任何的限制。一旦数字证书申请成功后,申请人则就成为了数字证书的所有人。
因此,SSL是建立在CA认证中心的权威、公正和可信赖的基础之上。但如果CA认证中心的信息可以被
伪造的,那么SSL相关的所有技术也就不可靠了。
(2)Http协议所代表的超文本传输协议中的信息是采用明文传输的,而Https协议则是具有安全性的SSL加密传输协议
一旦Web服务器部署了SSL证书后,可以确保用户在浏览器上输入的机密信息和从Web服务器上查询返回的机密信息从用户电脑到Web服务器之间的传输链路上是高强度加密传输的,是不可能被非法篡改和窃取的。
(3)Http协议和Https协议使用的是完全不同的连接方式,所应用的TCP/IP的端口也不一样——前者是80端口,后者是443端口。
(4)Http协议的连接是无状态的,而Https协议是由“SSL+http”协议构建的可进行加密传输、身份认证的网络协议,Https协议要比Http协议更加安全和可靠。
4、Https协议的通讯过程
(1)在服务器端存在一个公钥及私钥
在SSL会话产生时,服务器会传送它的数字证书。
(2)客户端从服务器取得数字证书中的公钥
(3)客户端产生一个随机的密钥——唯一的会话密钥
用户端浏览器会自动的分析服务器证书,从而产生出128位的会话密钥。该会话密钥用于对交易的信息进行加密,而且每次会话都不一样。
(4)客户端通过公钥对密钥加密(非对称加密)
如此设计的主要目的是保证客户端所产生的随机密钥只有对应的服务器能够获得和解密出客户端所产生的随机密钥。
(5)客户端将加密后的密钥发送到服务器端
(6)服务器端接受这个密钥并应用私钥进行解密,最终获得从客户端发送的随机密钥。以后的服务器端和客户端之间的通讯数据全部都通过这个随机密钥加密(对称加密)。
因此,客户端产生的随机密钥只有客户端和服务器端能得到,加密的数据也只有客户端和服务器端才能得到明文,从而保证了客户端到服务端的通信是安全的。而且Https协议通讯过程中所涉及的上述细节过程都会自动地完成,对用户是透明的。
5、Https协议主要能够解决的问题
(1)信任主机
采用Https协议的Web服务器必须从CA处申请一个用于证明本Web服务器用途类型的数字证书,该数字证书只有用于对应的Web服务器时,客户端相关的程序(一般为浏览器)才信任此Web服务器主机为所需要访问的真正的Web服务器——Web服务器启用SSL时,需要获得一个服务器证书并将该证书与要使用SSL的服务器绑定。
目前所有的银行系统所提供的网上银行,关键部分的应用都是采用Https协议连接的,客户通过信任该数字证书,从而信任了该Web服务器主机就是它所声称的那台服务器,而不是其它的Web服务器——比如,用户访问工银的网银系统,所连接的Web页面就是工银的网银系统页面,而不是“钓鱼”系统页面。
(2)通讯过程中的数据的泄密和被窜改
服务器端和客户端之间的所有通讯数据都是加密的——客户端产生一个对称的密钥,通过服务器端的数字证书来交换密钥。这也是一般意义上的握手过程。
在通讯过程中,在网络传输中的所有往来的信息数据都是加密的。第三方机构即使截获后也没有任何
的意义。因为没有密钥,当然窜改也就没有什么意义。
(3) 少许对客户端有要求的应用中,也会要求客户端也必须要提供有数字证书
这里的客户端证书,其实就类似表示个人信息的时候,除了用户名/密码, 还有一个CA 认证过的身份。因为,个人证书一般来说,别人无法模拟的,所有这样能够更进一步的确认自己的身份和确信能够访问到正确的Web服务器。
目前少数个人银行的专业版是这种做法,具体证书可能是拿U盘作为一个备份的载体的“U盾”。
6、Https协议是繁琐和复杂的
由于https协议需要密钥和确认加密算法、以及多次的“握手连接”,从而会影响使用的性能;每一

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。