博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
套接字工厂——ServerSocketFactory
阅读量:7080 次
发布时间:2019-06-28

本文共 1601 字,大约阅读时间需要 5 分钟。

接收器Acceptor在接收连接的过程中,根据不同的使用场合可能需要不同的安全级别,例如在支付相关的交易就必须对信息加密后再发送,这其中还涉及到密钥协商的过程,而在另外一些普通场合则无需对报文加密。反应到应用层则是使用http与https的问题,具体跟http/https相关的一些知识请到前面相关章节温习。

看一张跟https协议的组成层次图,它在应用层添加了一个TLS\SSL协议,于是组成了https协议。简单讲TLS\SSL协议给每次通信①提供认证服务,认证本次会话实体身份的合法性。②提供加密服务,强加密机制能保证通信过程中的消息不会被破译。③提供防篡改服务,利用Hash算法对消息进行签名,通过验证签名保证通信内容不被篡改。Java为开发者提供了方便的手段实现TLS\SSL协议,这就是安全套接字,它是Socket的安全升级版。Tomcat作为web服务器必须要实现对两种协议的支持,在java语言中,http协议对应Socket,而https则对应SSLScoket,在程序里根据不同的协议产生不同的套接字,于是引入了工厂模式处理套接字的相关操作,这个便是ServerSocketFactory工厂类。再一个由于不同厂商可自己定制SSL的实现,所以在具体程序实现时还有一些关于SSL实现的相关类,这些在前面的“Tomcat中的ssl安全信道的实现”章节有很详细的说明,可移步前往重新查阅。

ServerSocketFactory作为tomcat一个重要的组件,先看看它的运行逻辑是怎样的。首先说明下Tomcat中有两个工厂类DefaultServerSocketFactory和JSSESocketFactory,它们都实现了ServerSocketFactory接口,分别对应http协议套接字通道与https协议套接字通道。根据实际需求,假如机器的某端口使用加密通道则由JSSESocketFactory作为套接字工厂,反之则使用DefaultServerSocketFactory作为套接字工厂,于是tomcat中存在一个变量SSLEnabled用于标识是否使用加密通道,通过对此变量的定义就可以决定使用哪个工厂类,tomcat提供了外部配置文件供开发者和运维人员自定义。

实际上我们通过对server.xml进行配置就可以定义某个端口开放并是否使用安全通道,例如,

①   http协议对应的非安全通道

<service>

<Connector executor="tomcatThreadPool"port="8080" protocol="HTTP/1.1" connectionTimeout="20000"redirectPort="8443" />

</service>

②    https协议对应的安全通道

<service>

<Connector port="8443"protocol="HTTP/1.1" SSLEnabled="true"maxThreads="150" scheme="https" secure="true"clientAuth="false" sslProtocol="TLS" />

</service>

第一种配置告诉tomcat开放8080端口并使用http1.1协议进行非安全通信。第二种配置告诉tomcat开放8443端口并使用http1.1协议进行安全通信,其中安全协议是使用TLS协议。需要很注意的是加红加粗字体的SSLEnabled=”true”,此变量值会在tomcat启动初始化时读入自身程序中,运行时也正是通过此变量判断使用哪个套接字工厂,DefaultServerSocketFactory还是JSSESocketFactory。

    把ServerSocketFactory工厂组件引入后整个结构图变为如下:

你可能感兴趣的文章
简易翻译工具
查看>>
把tree结构数据转换easyui的columns
查看>>
Hello cnblogs
查看>>
C# 判断点是否在多边形内
查看>>
[WC2019] 数树
查看>>
Altium Ddesigner 栅格 含义
查看>>
oracle 11g 安装及网络配置
查看>>
实验7
查看>>
第一次工作->笔记:在phpstrom2019上搭建phpunit单元测试环境,php环境使用docker
查看>>
用最简单的语言给你解释“什么是股权稀释”
查看>>
hdu折线分割平面 递推
查看>>
学习该有的思维方式
查看>>
RColorBrewer的使用
查看>>
http协议基础(一)
查看>>
好看的电影-电视剧
查看>>
Linux:查看磁盘空间占用情况
查看>>
redis发布订阅
查看>>
dubbo+zookeeper
查看>>
ZOJ 3642 Just Another Information Sharing Problem【二分图多重匹配】
查看>>
Ansible基础
查看>>