具有SSL/TLS功能的Web服务器作业二具有SSL/TLS功能的Web服务器姓名:陈清早学号:PT1400158具有SSL/TLS功能的Web服务器-1-目录1详叙在Web服务器增加SSL/TLS功能的方法2截取客户端访问界面3SSL/TLS协议的分析3.1SSL/TLS概况3.2握手阶段的详细过程3.3记录协议的过程具有SSL/TLS功能的Web服务器-2-1详叙在Web服务器增加SSL/TLS功能的方法SSL/TLS在客户端和服务器之间建立加密通信通道。JAVA通过JSSE(javax.net.ssl)提供了对SSL和TLS的支持。通过其所提供的一系列API,开发者可以像使用普通Socket一样使用基于SSL或TLS的安全套接字,而不用关心SSL和TLS协议的细节,例如握手的流程等等。这使利用JAVA开发安全的SSL/TLS服务器或客户端非常容易。SSL提供的安全质量完全依赖于私钥,私钥是安全证书的基础,而安全证书则是验证服务器身份的重要因素。下面主要说一说如何配置SSL/TLS服务器。Sun在JDK中提供了一个安全钥匙与证书的管理工具Keytool。Keytool把钥匙,证书以及和与它们相关联的证书链储存到一个Keystore,默任的实现Keystore的是一个文件,配置一个SSL/TLS服务器需要以下几步:假设服务器的域名是:test.server.net。1.构建keystore,以存储证书。2.2.生成一个CertificateSigningRequest(CSR),CSR是提供给证书颁发机构,供证书颁发机构依据其中信息生成证书。3.将CSR提供给证书颁发机构CA,等待CA颁发证书;知名的CA有Versign,Thawte等。4.在CA等网站上下载CA的根证书。5.导入CA的根证书到keystore中。6.导入CA颁发的证书到keystore,CA通常不会直接返回一个文件,而是通过网页或email以文本形式提供,需要用户自己创建一个文件,再将文本拷入。这样就完成对服务器的配置,最后为服务器指定这个keystore就可以了。注意:一定导入正确的CA根证书,最常见的错误就是没有导入或导入错误的CA根证书。注意:有些客户端,在使用SSL/TLS时必须通过域名来连接服务器,不能通过IP地址来连接。其所连接的服务器域名和服务器的证书的颁发对象必须相同。例如服务器的域名是test.server.net,那么服务器的证书也必须是颁发给test.server.net的。证书颁发机构都会免费提供给用户用于测试的证书和相关的根证书,这种测试用的证书通常只有14天到30天不等的有效期。在SSLServerSocket这个类中有一个setNeedClientAuth方法,当这个选项设为true时,客户端和服务器在协商时,服务器会要求客户端也提供验证信息,如果客户端不能提供,服务器就会终止会话。将客户端的证书加入到服务器的TrustStore中,同时将服务器的证书加入到客户端的TrustStore中,使客户端和服务器互相信任。SSL层在TCP层建立了一个加密通道,通过这一层的数据经过了加密,因此达到了保密的效果。SSL层借助下层协议的通信安全协商出一份加密密钥,并用此密钥来加密HTTP请求;而TCP层与WebSever的443端口建立连接,传递SSL处理后的数据。2截取客户端访问界面安装配置完相关软件,以默认配置启动tomcat,在浏览器中输入或者h具有SSL/TLS功能的Web服务器-3-出现上述页面,表明基础的http访问成功搭建.用于tomcat中配置https的证书,keypass和storepass两个密码要一致,否则tomcat启动失败。重启启动tomcat,在浏览器中输入或回车:出现上述的界面说明tomcat中HTTPS访问配置已经成功。3SSL/TLS协议的分析3.1SSL/TLS概况:协议总体分为两层:高层:TLS握手协议、TLS密码变化协议、TLS警告协议。底层:TLS记录协议,上层协议是用于管理SSL密钥信息的交换,下层提供基本的安全服务TLS握手协议包括:客户和服务器之间相互认证,协商加密算法和密钥。它提供连接安全性,有三个特点:身份认证,至少对一方实现认证,也可以是双向认证协商得到的共享密钥是安全的,中间人不能够知道协商过程是可靠的.TLS记录协议是建立在可靠的传输协议(如TCP)之上,它提供连接安全性,有两个特点:1.保密性,SSL记录协议会协助双方产生一把共有的密钥,利用这把密钥来对SSL所传送的数据做传统式加密。2.完整性,SSL记录协议会协助双方产生另一把共有的密钥,利用这把密钥来计算出消息认证码。使用HMAC算法用来封装高层的协议。3.2握手阶段的详细过程具有SSL/TLS功能的Web服务器-4-大体过程描述:TLS握手协议(Handshakeprotocol)主要用来让客户端及服务器确认彼此的身份。为了保护SSL记录封包中传送的数据,Handshake协议还能协助双方选择连接时所会使用的加密算法、MAC算法、及用于保护SSL记录中所发数据的加密密钥。在传送应用程序的数据前,必须使用Handshake协议来完成上述事项。需要注意的是,握手阶段的所有通信都是明文的。“握手阶段”涉及四次通信:1.客户端发出请求(ClientHello)2.服务器回应(SeverHello)3.客户端回应4.服务器的最后回应.在握手过程中,要给服务器提供:支持的协议版本、客户端生成的随机数、支持的加密方法、支持的压缩方法等。客户端发送的信息之中不包括服务器的域名。也就是说,理论上服务器只能包含一个网站,否则会分不清应该向客户端提供哪一个网站的数字证书。这就是为什么通常一台服务器只能有一张数字证书的原因。服务器收到客户端请求后,向客户端发出回应,服务器的回应包含:确认使用的加密通信协议版本、服务器生成的随机数、确认使用的加密方法、服务器证书。客户端收到服务器回应以后,首先验证服务器证书。如果证书不是可信机构颁布、或者证书中的域名与实际域名不一致、或者证书已经过期,就会向访问者显示一个警告,由其选择是否还要继续通信。如果证书没有问题,客户端就会从证书中取出服务器的公钥。然后,向服务器发送:一个随机数、编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送、客户端握手结束通知,表示客户端的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供服务器校验。不管是客户端还是服务器,都需要随机数,这样生成的密钥才不会每次都一样。由于SSL协议中证书是静态的,因此十分有必要引入一种随机因素来保证协商出来的密钥的随机性。如果随机数不随机,就很容易被猜出来。服务器收到客户端的第三个随机数之后,计算生成本次会话所用的会话密钥。然后,向客户端最后发送下面信息:编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送、服务器握手结束通知,表示服务器的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供客户端校验。至此,整个握手阶段全部结束。接下来,客户端与服务器进入加密通信,就完全是使用普通的HTTP协议,只不过用会话密钥加密内容。具有SSL/TLS功能的Web服务器-5-3.3记录协议的过程SSLRecordFormatTLS记录协议中的操作:第一步,fragmentation,上层消息的数据被分片成214字节大小的块,或者更小。第二步,compression,必须是无损压缩,如果数据增加的话,则增加部分的长度不超过1024字节。第三步,计算消息认证码(MAC)第四步,encryption,采用CBC,算法由cipherspec指定数据长度不超过214+2048字节。SSL的安全性分析SSL协议采用的加密和认证算法,采用的加密算法有RC4,RC2,IDEA,DES会话秘钥由消息散列函数MD5产生。SSL的安全优势有,监听和中间人攻击、截拼攻击、重发攻击。SSL协议存在的问题有,秘钥管理问题、加密强度问题、数字签名问题等.SSL记录协议是用来封装上层协议数据的协议,在SSL协议中,所有的传输数据都被封装在记录中。记录是由,记录头、长度不为0的记录数据组成的。记录协议封装上层的,握手协议、警告协议、改变密码格式协议、应用数据协议。SSL记录协议定义了要传输数据的格式,它位于一些可靠的的传输协议之上(如TCP),用于各种更高层协议的封装,记录协议主要完成,分组、组合每个上层应用数据被分成2^14字节或更小的数据块、压缩是可选的,并且是无损压缩,压缩后内容长度的增加不能超过1024字节。以上就是对SSL/TLS协议的分析。