Tomcat安全证书, HTTPs配置, HTTP Connector

HTTP连接器(安全证书配置、HTTPs设置) 若需安全证书可通过哲涛EasyHttps申请

目录

  • 介绍
  • 属性
    1. 共同属性
    2. 标准实施
    3. Java TCP socket属性
    4. NIO具体配置
    5. NIO2具体配置
    6. APR /本机特定配置
  • 嵌套组件
  • 特殊功能
    1. HTTP / 1.1和HTTP / 1.0支持
    2. HTTP / 2支持
    3. 代理支持
    4. SSL支持
    5. SSL支持 - SSLHostConfig
    6. SSL支持 - 证书
    7. SSL支持 - 连接器 - NIO和NIO2
    8. SSL支持 - 连接器 - NIO和NIO2(已弃用)
    9. SSL支持 - 连接器 - APR / Native(已弃用)
    10. 连接器比较

介绍

HTTP连接器元件代表一个 连接器支持HTTP / 1.1协议组件。除了能够执行servlet和JSP页面之外,它还可以使Catalina成为独立的Web服务器。此组件的特定实例侦听服务器上特定TCP端口号上的连接。一个或多个这样的连接器可以被配置为单个服务的一部分,每个转发到相关联的引擎以执行请求处理并创建响应。

如果您希望配置的连接器,用于使用AJP协议(如对Web服务器的连接 mod_jk 1.2.x接口为Apache 1.3),请参阅 AJP连接器文档。

每个传入的请求在该请求的持续时间内都需要一个线程。如果接收到的并发请求比当前可用的请求处理线程处理的更多并发请求,则将创建额外的线程,直到配置的最大值(属性的值maxThreads)。如果接收到进一步的同时请求,它们被创建的服务器插座内部堆叠连接器,直至配置的最大(所述值acceptCount 属性)。任何进一步的同步请求将收到“连接被拒绝”错误,直到资源可用于处理它们。

属性

共同属性

的所有实现连接器 支持以下属性:

属性 描述
allowTrace

一个布尔值,可用于启用或禁用TRACE HTTP方法。如果未指定,则此属性设置为false。

asyncTimeout

异步请求的默认超时(以毫秒为单位)。如果未指定,则此属性设置为默认值为30000(30秒)的Servlet规范。

defaultSSLHostConfigName

默认的名称SSLHostConfig将被用于安全连接(如果该连接器被配置为用于安全连接),如果客户端连接不提供SNI或如果提供了SNI但不符合任何配置 SSLHostConfig如果未指定,_default_将使用默认值 

enableLookups

设置为true是否要呼叫 request.getRemoteHost()执行DNS查找,以返回远程客户端的实际主机名。设置为false跳过DNS查找,并以String形式返回IP地址(从而提高性能)。默认情况下,DNS查找被禁用。

maxHeaderCount

容器允许的请求中的最大标头数。包含比指定限制更多的标头的请求将被拒绝。值小于0表示无限制。如果未指定,则使用默认值100。

maxParameterCount

容器自动解析的参数和值对(GET plus POST)的最大数量。超出此限制的参数和值对将被忽略。值小于0表示无限制。如果未指定,则使用默认值10000。请注意, FailedRequestFilter 过滤器可用于拒绝达到限制的请求。

maxPostSize

POST的最大大小(以字节为单位),将由容器FORM URL参数解析来处理。通过将此属性设置为小于零的值,可以禁用限制。如果未指定,则此属性设置为2097152(2兆字节)。请注意, FailedRequestFilter 可以用于拒绝超出此限制的请求。

maxSavePostSize

在FORM或CLIENT-CERT身份验证期间,将由容器保存/缓冲的POST的最大大小(以字节为单位)。对于这两种类型的身份验证,POST将在用户进行身份验证之前进行保存/缓冲。对于CLIENT-CERT认证,POST在SSL握手期间进行缓冲,缓冲区在处理请求时清空。对于FORM身份验证,POST将被保存,同时用户被重定向到登录表单,并保留,直到用户成功认证或与身份验证请求相关联的会话过期。可以通过将此属性设置为-1来禁用该限制。将属性设置为零将在身份验证期间禁用POST数据的保存。如果没有指定,

parseBodyMethods

以逗号分隔的HTTP方法列表,请求主体将被解析为与POST相同的请求参数。这对于希望支持PUT请求的POST样式语义的RESTful应用程序很有用。请注意,除了POST导致Tomcat的行为违反servlet规范意图的方式之外,任何设置这里根据HTTP规范特别禁止HTTP方法TRACE。默认是POST

port

此连接 将创建服务器套接字并等待传入​​连接的TCP端口号您的操作系统将只允许一个服务器应用程序侦听特定IP地址上的特定端口号。如果使用特殊值0(零),则Tomcat将随机选择一个空闲端口用于此连接器。这通常仅在嵌入式和测试应用程序中有用。

protocol

设置协议来处理传入流量。默认值是 HTTP/1.1使用自动切换机制来选择基于Java NIO的连接器或基于APR /本机的连接器。如果PATH(Windows)或LD_LIBRARY_PATH(在大多数unix系统上)环境变量包含Tomcat本地库,并且AprLifecycleListener用于初始化APR的useAprConnector属性设置为其属性 true,则将使用APR /本机连接器。如果无法找到本机库或未配置该属性,将使用基于Java NIO的连接器。请注意,APR /本机连接器具有与Java连接器不同的HTTPS设置。
要使用显式协议而不是依赖上述自动切换机制,可以使用以下值:
org.apache.coyote.http11.Http11NioProtocol- 非阻塞Java NIO连接器
org.apache.coyote.http11.Http11Nio2Protocol- 非阻塞Java NIO2连接器
org.apache.coyote.http11.Http11AprProtocol- APR /本机连接器。
也可以使用自定义实现。
看看我们的连接器比较图表。对于http和https,两个Java连接器的配置是相同的。
有关APR连接器和APR特定SSL设置的更多信息,请访问APR文档 - 非阻塞Java NIO连接器- 非阻塞Java NIO2连接器- APR /本地连接器。也可以使用自定义实现。看看我们的连接器比较图表。对于http和https,两个Java连接器的配置是相同的。有关APR连接器和APR特定SSL设置的更多信息,请访问APR文档 - 非阻塞Java NIO连接器- 非阻塞Java NIO2连接器- APR /本地连接器。也可以使用自定义实现。看看我们的连接器比较图表。对于http和https,两个Java连接器的配置是相同的。有关APR连接器和APR特定SSL设置的更多信息,请访问APR文档 对于http和https,两个Java连接器的配置是相同的。有关APR连接器和APR特定SSL设置的更多信息,请访问APR文档 对于http和https,两个Java连接器的配置是相同的。有关APR连接器和APR特定SSL设置的更多信息,请访问APR文档

proxyName

如果此连接器用于代理配置,请配置此属性以指定要调用的服务器名称request.getServerName()有关详细信息,请参阅代理支持

proxyPort

如果此连接器用于代理配置,请配置此属性以指定要呼叫返回的服务器端口request.getServerPort()有关详细信息,请参阅代理支持

redirectPort

如果此连接器支持非SSL请求,并且接收到匹配 需要SSL传输的请求,则Catalina将自动将请求重定向到此处指定的端口号。

scheme

将此属性设置为您希望通过调用返回的协议的名称request.getScheme()例如,您将httpsSSL属性设置为“ ”。默认值为“ http”。

secure

将此属性设置为true如果您希望调用request.isSecure()返回true 了此连接器接收到的请求。您将需要在SSL连接器或从SSL加速器接收数据的非SSL连接器(如加密卡,SSL设备甚至Web服务器)中。默认值为false

sendReasonPhrase

将此属性设置为true如果您希望在响应中有一个原因短语。默认值为false

注意:此选项已弃用,将在Tomcat 9中删除。原因短语将不会发送。

URIEncoding

这指定了%xx解码URL之后用于解码URI字节的字符编码。如果未指定,将使用UTF-8,除非org.apache.catalina.STRICT_SERVLET_COMPLIANCE 系统属性设置为true 在这种情况下将使用ISO-8859-1。

useBodyEncodingForURI

这将指定contentType中指定的编码是否应用于URI查询参数,而不是使用URIEncoding。存在与Tomcat 4.1.x兼容的此设置,其中contentType中指定的编码或使用Request.setCharacterEncoding方法显式设置的编码也用于来自URL的参数。默认值为false

注意: 1)此设置仅适用于请求的查询字符串。不像URIEncoding它不影响请求URI的路径部分。2)如果不知道请求字符编码(浏览器不提供,不SetCharacterEncodingFilter使用Request.setCharacterEncoding方法设置或使用类似的过滤器),则默认编码始终为“ISO-8859-1”。URIEncoding设置对此默认没有影响。

useIPVHosts

将此属性设置true为使Tomcat使用接收到请​​求的IP地址来确定要发送请求的主机。默认值为false

xpoweredBy

将此属性设置true为使Tomcat使用规范中推荐的头来广告支持Servlet规范。默认值为false

标准实施

标准HTTP连接器(NIO,NIO2和APR /本机)除了上面列出的常见连接器属性之外,还支持以下属性。

属性 描述
acceptCount

所有可能的请求处理线程正在使用时,传入连接请求的最大队列长度。当队列满时收到的任何请求都将被拒绝。默认值为100。

acceptorThreadCount

用于接受连接的线程数。在多CP​​U机器上增加这个值,虽然你永远不会真的需要更多的2另外,通过大量的非活动连接,您也可以增加此值。默认值为 1

acceptorThreadPriority

接受者线程的优先级。用于接受新连接的线程。默认值为5( java.lang.Thread.NORM_PRIORITY常数值)。有关java.lang.Thread该优先级的更多细节,请参阅JavaDoc 类。

address

对于具有多个IP地址的服务器,此属性指定将在指定端口上侦听哪个地址。默认情况下,连接器将监听所有本地地址。除非JVM使用系统属性进行其他配置,否则使用基于Java的连接器(NIO,NIO2)将在配置为0.0.0.0之一时侦听IPv4和IPv6地址::年利率/本地连接器将仅侦听如果配置IP地址 0.0.0.0和IPv6地址(以及可选地取决于设置IPv4地址将听ipv6onlyv6如果配置了)::

allowedTrailerHeaders

默认情况下,当处理分块输入时,Tomcat将忽略所有的尾部标题。对于要处理的标题,必须将其添加到以逗号分隔的标题名称列表中。

bindOnInit

控制连接器使用的插座是否绑定。默认情况下,当连接器被破坏时,连接器启动和绑定时,它将被绑定。如果设置为false,则当连接器启动时,插座将被绑定,并且在停止时将其绑定。

clientCertProvider

当客户端证书信息以不同于其实例的形式呈现时java.security.cert.X509Certificate,需要转换客户端证书信息,然后才能使用客户端证书信息,此属性控制哪个JSSE提供程序用于执行转换。例如,它被用于与AJP连接器中,HTTP四月连接器和与该 org.apache.catalina.valves.SSLValve如果未指定,将使用默认提供程序。

compressibleMimeType

该值是可以使用HTTP压缩的MIME类型的逗号分隔列表。默认值为 text/html,text/xml,text/plain,text/css,text/javascript,application/javascript 

compression

连接可以使用HTTP / 1.1 GZIP压缩来尝试保存服务器带宽。参数的可接受值为“关闭”(禁用压缩),“开”(允许压缩,导致文本数据压缩),“强制”(强制所有情况下的压缩)或数字整数值相当于“on”,但指定输出压缩前的最小数据量)。如果内容长度不知道,并且压缩设置为“开”或更积极,则输出也将被压缩。如果未指定,则此属性设置为“关闭”。

注意:使用压缩(节省带宽)和使用sendfile功能(节省CPU周期)之间存在折衷。如果连接器支持sendfile功能,例如NIO连接器,则使用sendfile将优先于压缩。症状将是静态文件大于48 Kb将被未压缩发送。您可以通过设置useSendfile连接器的属性来关闭sendfile,如下所述,或者在DefaultServlet的默认配置conf/web.xmlweb.xmlWeb 应用程序的配置中更改sendfile的使用阈 值 

compressionMinSize

如果压缩设置为“on”,则该属性可用于在输出压缩之前指定最小数据量。如果未指定,则此属性默认为“2048”。

connectionLinger

此连接器使用的插座 在关闭时将停留的秒数默认值是-1禁用套接字保留。

connectionTimeout

连接器在接受连接后等待的请求URI行的毫秒数。使用值-1表示无(即无限)超时。默认值为60000(即60秒),但请注意Tomcat附带的标准server.xml将其设置为20000(即20秒)。除非disableUploadTimeout设置为false否则在读取请求主体(如果有)时也将使用此超时。

connectionUploadTimeout

指定正在进行数据上传时使用的超时(以毫秒为单位)。这仅在disableUploadTimeout设置为有效时才会生效 false

disableUploadTimeout

此标志允许servlet容器在数据上传期间使用不同的通常较长的连接超时。如果未指定,则此属性设置为true禁用此更长的超时。

executor

Executor 元素中的名称的引用如果设置了此属性,并且命名的执行程序存在,则连接器将使用执行程序,并且所有其他线程属性将被忽略。请注意,如果未为连接器指定共享执行程序,则连接器将使用私有的内部执行程序来提供线程池。

executorTerminationTimeoutMillis

在继续停止连接器的过程之前,私有内部执行者将等待请求处理线程终止的时间。如果未设置,默认值为 5000(5秒)。

keepAliveTimeout

毫秒数这个连接器将等待另一个HTTP请求关闭连接之前。默认值是使用为connectionTimeout属性设置的值 使用值-1表示无(即无限)超时。

maxConnections

服务器在任何给定时间接受和处理的最大连接数。当达到这个数字时,服务器将接受一个进一步的连接,但不会处理。这个附加连接将被阻塞,直到正在处理的连接数降到maxConnections以下,服务器再次开始接受并重新处理新的连接。请注意,一旦达到限制,操作系统仍然可以接受基于acceptCount设置的连接。默认值因连接器类型而异。对于NIO和NIO2,默认值为10000对于APR / native,默认值为8192

请注意,对于Windows上的APR / native,配置的值将减少到小于或等于maxConnections的1024的最高倍数。这是出于性能原因。
如果设置为-1,则禁用maxConnections功能,并且不计算连接。

maxCookieCount

请求的允许的最大Cookie数。小于零的值意味着没有限制。如果未指定,将使用默认值200。

maxExtensionSize

限制块分组HTTP请求中的分机总长度。如果价值是-1,将不会受到限制。如果未指定,8192将使用默认值

maxHttpHeaderSize

HTTP请求和响应的最大大小,以字节指定。如果未指定,则此属性设置为8192(8 KB)。

maxKeepAliveRequests

在服务器关闭连接之前,可以流水线的最大HTTP请求数。将此属性设置为1将禁用HTTP / 1.0保持活动,以及HTTP / 1.1保持活动和流水线。将其设置为-1将允许无限量的流水线或保持活动的HTTP请求。如果未指定,则此属性设置为100。

maxSwallowSize

由Tomcat吞噬中止上传的请求体字节数(不包括传输编码开销)的最大数量。中止的上传是Tomcat知道请求正文将被忽略,但是客户端仍然发送它。如果Tomcat不吞咽身体,客户端不太可能看到响应。如果未指定,将使用默认值2097152(2兆字节)。值小于零表示不执行任何限制。

maxThreads

由该被创建的请求处理线程的最大数目连接器,其因此确定可处理的同时请求的最大数目。如果未指定,则此属性设置为200.如果执行程序与此连接器相关联,则此属性将被忽略,因为连接器将使用执行程序而不是内部线程池执行任务。请注意,如果配置了一个执行者,则该属性的任何值都将被正确记录,但会被报告(例如通过JMX),-1以便明确表示该属性 未被使用。

maxTrailerSize

限制分块HTTP请求的最后一个块中的尾部头部的总长度。如果价值是-1,将不会受到限制。如果未指定,8192将使用默认值

minSpareThreads

最小线程数始终保持运行。如果未指定,则使用默认值10如果执行程序与此连接器相关联,则此属性将被忽略,因为连接器将使用执行程序而不是内部线程池执行任务。请注意,如果配置了一个执行者,则该属性的任何值都将被正确记录,但会被报告(例如通过JMX),-1以便明确表示该属性 未被使用。

noCompressionUserAgents

该值是一个正则表达式(使用java.util.regex)匹配user-agent不应使用压缩的HTTP客户端标头,因为这些客户端虽然广告支持该功能,但却具有破坏的实现。默认值为空字符串(禁用正则表达式匹配)。

processorCache

协议处理器缓存处理器对象以加快性能。此设置指定这些对象中有多少被缓存。 -1意思是无限制,默认是200如果不使用Servlet 3.0异步处理,一个很好的默认是使用与maxThreads相同的设置。如果使用Servlet 3.0进行异步处理,一个很好的默认是使用较大的maxThreads和最大数量的预期并发请求(同步和异步)。

restrictedUserAgents

该值是一个正则表达式(使用java.util.regex)匹配不应使用user-agentHTTP / 1.1或HTTP / 1.0保持活动的HTTP客户端头部,即使客户端广告支持这些功能。默认值为空字符串(禁用正则表达式匹配)。

server

覆盖http响应的服务器头。如果设置,此属性的值将覆盖Web应用程序设置的任何服务器头文件。如果未设置,则使用应用程序指定的任何值。如果应用程序未指定值,则不会设置服务器头。

serverRemoveAppProvidedValues

如果true由Web应用程序设置的任何服务器头文件将被删除。请注意,如果设置了服务器,则此属性被有效地忽略。如果未设置,false将使用默认值 

SSLEnabled

使用此属性可以在连接器上启用SSL流量。要在连接器上打开SSL握手/加密/解密,请将此值设置为true默认值为false当把这个值true,你会想设置 schemesecure属性,以及通过正确的request.getScheme()request.isSecure()值,以Servlet的见SSL支持以获取更多信息。

tcpNoDelay

如果设置为true,TCP_NO_DELAY选项将在服务器套接字上设置,这可以在大多数情况下提高性能。这是true默认设置。

threadPriority

JVM中请求处理线程的优先级。默认值为5( java.lang.Thread.NORM_PRIORITY常数值)。有关java.lang.Thread该优先级的更多细节,请参阅JavaDoc 类。如果执行程序与此连接器相关联,则此属性将被忽略,因为连接器将使用执行程序而不是内部线程池执行任务。请注意,如果配置了一个执行者,则该属性的任何值都将被正确记录,但会被报告(例如通过JMX),-1以便明确表示该属性 未被使用。

Java TCP socket属性

NIO和NIO2实现除了上面列出的常见连接器和HTTP属性之外,还支持以下Java TCP套接字属性。

属性 描述
socket.rxBufSize

(int)套接字接收缓冲区(SO_RCVBUF)的大小(以字节为单位)。如果未设置,则使用JVM默认值。

socket.txBufSize

(int)套接字发送缓冲区(SO_SNDBUF)大小(以字节为单位)。如果未设置,则使用JVM默认值。

socket.tcpNoDelay

(bool)这相当于标准属性 tcpNoDelay

socket.soKeepAlive

(bool)套接字保持活动设置(SO_KEEPALIVE)的布尔值。如果未设置,则使用JVM默认值。

socket.ooBInline

(bool)套接字OOBINLINE设置的布尔值。如果未设置,则使用JVM默认值。

socket.soReuseAddress

(bool)套接字重用地址选项(SO_REUSEADDR)的布尔值。如果未设置,则使用JVM默认值。

socket.soLingerOn

(bool)套接字的布尔值so linger选项(SO_LINGER)。 > = 0 的标准属性connectionLinger的等于设置为true <0 的标准属性connectionLinger的相当于设置为false这两个属性soLingerTime都必须被设置,否则将使用JVM默认值。

socket.soLingerTime

(int)套接字的值以秒为单位so lang选项(SO_LINGER)。这相当于标准属性 connectionLinger这两个属性soLingerOn都必须被设置,否则将使用JVM默认值。

socket.soTimeout

这相当于标准属性 connectionTimeout

socket.performanceConnectionTime

(int)性能设置的第一个值。请参阅 套接字性能选项必须设置所有三个性能属性,否则将使用所有三个JVM默认值。

socket.performanceLatency

(int)性能设置的第二个值。请参阅 套接字性能选项必须设置所有三个性能属性,否则将使用所有三个JVM默认值。

socket.performanceBandwidth

(int)性能设置的第三个值。请参阅 套接字性能选项必须设置所有三个性能属性,否则将使用所有三个JVM默认值。

socket.unlockTimeout

(int)套接字解锁的超时。当连接器停止时,它将尝试通过打开一个连接器来释放接受器线程。默认值为250,值为毫秒

NIO具体配置

以下属性特定于NIO连接器。

属性 描述
pollerThreadCount

(int)用于轮询事件运行的线程数。默认值为1每个处理器但不超过2. 
当接受套接字时,操作系统保存全局锁定。因此,超过2个线程的好处将迅速消失。对于需要非常快速地接受连接的系统,有多个线程。但通常只是增加acceptCount会解决这个问题。当大量发送文件操作正在进行时,增加此值也可能是有益的。

pollerThreadPriority

(int)轮询线程的优先级。默认值为5( java.lang.Thread.NORM_PRIORITY常数值)。有关java.lang.Thread该优先级的更多细节,请参阅JavaDoc 类。

selectorTimeout

(int)在轮询器的select()上超时的时间(以毫秒为单位)。该值很重要,因为连接清理在同一个线程上完成,因此不要将此值设置为非常高的值。默认值为1000毫秒。

useSendfile

(bool)使用此属性启用或禁用sendfile功能。默认值为true请注意,使用sendfile将禁用Tomcat可能对响应执行的任何压缩。

socket.directBuffer

(bool)布尔值,是否使用直接ByteBuffers或java映射ByteBuffers。如果true再 java.nio.ByteBuffer.allocateDirect()用于分配的缓冲区,如果false再 java.nio.ByteBuffer.allocate()被使用。默认值为false
当您使用直接缓冲区时,请确保为直接内存空间分配适当的内存量。在Sun的JDK上,会是这样的-XX:MaxDirectMemorySize=256m

socket.directSslBuffer

(bool)布尔值,是否使用直接ByteBuffers或java映射的ByteBuffers作为SSL缓冲区。如果true再 java.nio.ByteBuffer.allocateDirect()用于分配的缓冲区,如果false再 java.nio.ByteBuffer.allocate()被使用。默认值为false
当您使用直接缓冲区时,请确保为直接内存空间分配适当的内存量。在Oracle的JDK上就是这样-XX:MaxDirectMemorySize=256m

socket.appReadBufSize

(int)在Tomcat中打开的每个连接都与读取ByteBuffer相关联。此属性控制此缓冲区的大小。默认情况下,读取缓冲区大小为8192字节。为了降低并发性,您可以增加这个来缓冲更多的数据。对于极大量的保持活动连接,减少此数量或增加堆大小。

socket.appWriteBufSize

(int)在Tomcat中打开的每个连接都与写入ByteBuffer相关联。此属性控制此缓冲区的大小。默认情况下,这个写缓冲区大小为8192字节。对于低并发性,您可以增加此值来缓冲更多的响应数据。对于极大量的保持活动连接,减少此数量或增加堆大小。
这里的默认值相当低,如果您不处理数万个并发连接,您应该启动它。

socket.bufferPool

(int)NIO连接器使用一个名为NioChannel的类来保存链接到套接字的元素。为了减少垃圾收集,NIO连接器缓存这些通道对象。此值指定此缓存的大小。默认值为500,并表示高速缓存将保存500个NioChannel对象。其他值是 -1无限制缓存,0无缓存。

socket.bufferPoolSize

(int)NioChannel池也可以是基于大小的,不是基于对象的。大小计算如下:
NioChannel buffer size = read buffer size + write buffer size
SecureNioChannel buffer size = application read buffer size + application write buffer size + network read buffer size + network write buffer size
值为字节,默认值为1024*1024*100 (100MB)。

socket.processorCache

(int)Tomcat将缓存SocketProcessor对象以减少垃圾回收。整数值最多指定要保存在缓存中的对象数量。默认是500其他值是 -1无限制缓存,0无缓存。

socket.keyCache

(int)Tomcat将缓存KeyAttachment对象以减少垃圾回收。整数值最多指定要保存在缓存中的对象数量。默认是500其他值是 -1无限制缓存,0无缓存。

socket.eventCache

(int)Tomcat将缓存PollerEvent对象以减少垃圾回收。整数值最多指定要保存在缓存中的对象数量。默认是500其他值是 -1无限制缓存,0无缓存。

selectorPool.maxSelectors

(int)要在池中使用的最大选择器,以减少选择器争用。当命令行org.apache.tomcat.util.net.NioSelectorShared值设置为false 时使用此选项 默认值为200

selectorPool.maxSpareSelectors

(int)要在池中使用的最大备用选择器,以减少选择器争用。当选择器返回到池时,系统可以决定保留它或让它被GC。当命令行org.apache.tomcat.util.net.NioSelectorShared 值设置为false 时使用此选项默认值为-1(无限制)。

command-line-options

以下命令行选项可用于NIO连接器:
-Dorg.apache.tomcat.util.net.NioSelectorShared=true|false - 默认为true将此值设置false为要为每个线程使用选择器。当您设置它时false,您可以使用selectorPool.maxSelectors属性来控制选择器池的大小 

NIO2具体配置

以下属性特定于NIO2连接器。

属性 描述
useSendfile

(bool)使用此属性启用或禁用sendfile功能。默认值为true请注意,使用sendfile将禁用Tomcat可能对响应执行的任何压缩。

socket.directBuffer

(bool)布尔值,是否使用直接ByteBuffers或java映射ByteBuffers。如果true再 java.nio.ByteBuffer.allocateDirect()用于分配的缓冲区,如果false再 java.nio.ByteBuffer.allocate()被使用。默认值为false
当您使用直接缓冲区时,请确保为直接内存空间分配适当的内存量。在Sun的JDK上,会是这样的-XX:MaxDirectMemorySize=256m

socket.directSslBuffer

(bool)布尔值,是否使用直接ByteBuffers或java映射的ByteBuffers作为SSL缓冲区。如果true再 java.nio.ByteBuffer.allocateDirect()用于分配的缓冲区,如果false再 java.nio.ByteBuffer.allocate()被使用。默认值为false
当您使用直接缓冲区时,请确保为直接内存空间分配适当的内存量。在Oracle的JDK上就是这样-XX:MaxDirectMemorySize=256m

socket.appReadBufSize

(int)在Tomcat中打开的每个连接都与读取ByteBuffer相关联。此属性控制此缓冲区的大小。默认情况下,读取缓冲区大小为8192字节。为了降低并发性,您可以增加这个来缓冲更多的数据。对于极大量的保持活动连接,减少此数量或增加堆大小。

socket.appWriteBufSize

(int)在Tomcat中打开的每个连接都与写入ByteBuffer相关联。此属性控制此缓冲区的大小。默认情况下,这个写缓冲区大小为8192字节。对于低并发性,您可以增加此值来缓冲更多的响应数据。对于极大量的保持活动连接,减少此数量或增加堆大小。
这里的默认值相当低,如果您不处理数万个并发连接,您应该启动它。

socket.bufferPool

(int)NIO2连接器使用一个名为Nio2Channel的类,它保存链接到套接字的元素。为了减少垃圾回收,NIO2连接器缓存这些通道对象。此值指定此缓存的大小。默认值为500,并表示缓存将保存500个Nio2Channel对象。其他值是 -1无限制缓存,0无缓存。

socket.processorCache

(int)Tomcat将缓存SocketProcessor对象以减少垃圾回收。整数值最多指定要保存在缓存中的对象数量。默认是500其他值是 -1无限制缓存,0无缓存。

APR /本机特定配置

以下属性特定于APR /本机连接器。

属性 描述
deferAccept

设置该TCP_DEFER_ACCEPT连接器的侦听套接字上标志。默认值是true其中 TCP_DEFER_ACCEPT由操作系统支持,否则是false

ipv6v6only

如果在双栈系统上侦听IPv6地址,连接器只能侦听IPv6地址?如果未指定false,则连接器将侦听IPv6地址和等效的IPv4地址(如果存在)。

pollerThreadCount

用于轮询的线程数保持活动连接。在Windows上,选择默认值,以便每个线程管理的套接字小于1024.对于Linux,默认值为1.在Windows上更改默认值可能会对性能产生负面影响。

pollTime

轮询电话的持续时间(微秒)。降低此值会稍微降低连接在某些情况下保持活动的延迟,但会在进行更多的轮询呼叫时使用更多的CPU。默认值为2000(2ms)。

sendfileSize

负责异步发送静态文件的轮询器的套接字数量可以在给定时间保持。额外的连接将立即关闭,无需发送任何数据(导致客户端的零长度文件)。请注意,在大多数情况下,sendfile是一个将立即返回(由内核进行“同步”)的调用,并且不会使用sendfile轮询器,因此可以同时发送的静态文件数量多大于规定量。默认值为1024。

threadPriority

(int)接受者和轮询线程的优先级。默认值为5( java.lang.Thread.NORM_PRIORITY常数值)。有关java.lang.Thread该优先级的更多细节,请参阅JavaDoc 类。

useSendfile

(bool)使用此属性启用或禁用sendfile功能。默认值为true请注意,使用sendfile将禁用Tomcat可能对响应执行的任何压缩。

嵌套组件

首先在Tomcat 9中实现并且后端移植到8.5,Tomcat现在支持服务器名称指示(SNI)。这允许多个SSL配置与单个安全连接器相关联,其中用于由客户端请求的主机名确定的任何给定连接的配置。为了方便起见,添加了SSLHostConfig元素,可用于定义其中一个配置。任何数量的 SSLHostConfig可以嵌套在连接器中。同时,为多个证书添加了与单个SSLHostConfig关联的支持。因此,每个SSL证书是在配置证书元件与一个 SSLHostConfig。了解更多信息,

特殊功能

HTTP / 1.1和HTTP / 1.0支持

连接器支持HTTP / 1.1协议的所有必需功能,如RFC 7230-7235中所述,包括持续连接,流水线,期望和分块编码。如果客户端仅支持HTTP / 1.0或HTTP / 0.9,则 连接器将优雅地退回以支持此协议。不需要特殊配置来启用此支持。该连接器还支持HTTP / 1.0保持活动。

RFC 7230要求HTTP服务器始终以他们声称支持的最高HTTP版本开始他们的响应。因此,该 连接器将始终HTTP/1.1在其响应开始时返回。

HTTP / 2支持

HTTP / 2支持TLS(h2),非TLS通过HTTP升级(h2c)和直接HTTP / 2(h2c)连接。要启用的HTTP连接器下面的HTTP / 2支持UpgradeProtocol元件必须嵌套的内连接器带有 的className的属性 org.apache.coyote.http2.Http2Protocol


  

由于Java 8的TLS实现不支持ALPN(这是HTTP / 2通过TLS所必需的),因此您必须使用基于OpenSSL的TLS实现来启用HTTP / 2支持。请参阅连接 sslImplementationName器的 属性

其他配置属性可用。有关详细信息,请参阅 HTTP / 2升级协议文档。

代理支持

proxyNameproxyPort当Tomcat在代理服务器上运行的属性都可以使用。这些属性会修改返回给调用request.getServerName()request.getServerPort() 方法的Web应用程序的值 ,这些值通常用于为重定向创建绝对URL。不配置这些属性,返回的值将反映从代理服务器接收到的连接的服务器名称和端口,而不是客户端指示原始请求的服务器名称和端口。

有关更多信息,请参阅 代理支持如何。

SSL支持

您可以启用这个特定实例支持SSL 连接器通过设置SSLEnabled属性 true

您还需要设置schemesecure 属性值https,并true 分别向正确的信息传递给servlet的。

NIO和NIO2连接器使用JSSE Java SSL实现或OpenSSL实现,而APR /本机连接器仅使用OpenSSL。在Tomcat 8.5之前,JSSE和OpenSSL使用了不同的配置属性。从Tomcat 8.5起,尽可能的将通用配置属性用于JSSE和OpenSSL。另外如果使用JSSE OpenSSL实现,可以使用JSSE或APR属性来设置配置(注意:但不能在同一配置中同时使用两种类型)。这是为了帮助SSL连接器的连接器实现之间更简单的切换。

每个安全连接器必须至少定义一个 SSLHostConfig。该名称 SSLHostConfig元素必须是唯一的,其中一人必须在比赛defaultSSLHostConfigName中的属性 连接器

每个SSLHostConfig必须至少定义一个 证书证书的类型必须是唯一的。

从Tomcat 8.5开始,连接器中大部分SSL配置属性 被弃用。如果指定,它们将被用于配置SSLHostConfig证书 的defaultSSLHostConfigName。请注意,如果显式的 SSLHostConfig元素也存在, defaultSSLHostConfigName那么将被视为配置错误。预期Tomcat 10将删除对连接器中SSL配置属性的支持

若需要安全证书,请通过easy.zhetao.com申请

SSL支持 - SSLHostConfig

 

属性 描述
certificateRevocationFile

包含证书颁发机构的连接证书吊销列表的文件的名称。格式是PEM编码的。如果未定义,将不会针对证书吊销列表检查客户端证书(除非使用基于OpenSSL的连接器并 定义了certificateRevocationPath)。相对路径将被解决$CATALINA_BASE基于JSSE的连接器也可以指定此属性的URL。

certificateRevocationPath

只有OpenSSL

包含证书颁发机构的证书吊销列表的目录的名称。格式是PEM编码的。相对路径将被解决$CATALINA_BASE

certificateVerification

设置为required如果希望SSL堆栈在接受连接之前从客户端请求有效的证书链。设置为optional是否希望SSL堆栈请求客户端证书,但如果没有显示客户端证书,则不会失败。设置为 optionalNoCA如果您希望客户端证书是可选的,并且您不希望Tomcat针对可信CA的列表进行检查。如果TLS提供程序不支持此选项(OpenSSL,则JSSE不会)将其视为optional已被指定。一 none,除非客户端请求由使用安全约束保护的资源值(默认值)将不需要证书链CLIENT-CERT认证。

certificateVerificationDepth

验证客户端证书时允许的中间证书的最大数量。如果未指定,将使用默认值10。

caCertificateFile

只有OpenSSL

包含可信证书颁发机构的级联证书的文件的名称。格式是PEM编码的。

caCertificatePath

只有OpenSSL

包含可信证书颁发机构的证书的目录的名称。格式是PEM编码的。

ciphers

使用OpenSSL语法的密码。(有关支持的密码列表和语法,请参阅OpenSSL文档)。或者,可以使用使用标准OpenSSL密码名称或标准JSSE密码名称的逗号分隔的密码列表。

从基于JSSE的连接器的OpenSSL语法转换为JSSE密码时,OpenSSL语法解析的行为与OpenSSL 1.1.0开发分支的行为保持一致。

只会使用SSL实现所支持的密码。

如果未指定,将使用默认值(使用OpenSSL符号) HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!kRSA

请注意,默认情况下,将密码定义的顺序视为优先顺序。honorCipherOrder

disableCompression

只有OpenSSL

配置压缩是否被禁用。默认是 true如果使用的OpenSSL版本不支持禁用压缩,那么将使用该OpenSSL版本的默认值。

disableSessionTickets

只有OpenSSL

禁用使用TLS会话单(RFC 4507)(如果设置为) true默认是false

honorCipherOrder

设置为true强制服务器的密码顺序(从ciphers设置),而不是允许客户端选择密码。默认是false使用此功能需要Java 8或更高版本。

hostName

SSL主机的名称。这应该是完全合格的域名(例如tomcat.apache.org)或通配符域名(例如*.apache.org)。如果未指定,_default_将使用默认值

insecureRenegotiation

只有OpenSSL

配置是否允许不安全的重新协商。默认是 false如果所使用的OpenSSL版本不支持配置,如果不安全的重新协商被允许,那么该OpenSSL版本的默认值将被使用。

keyManagerAlgorithm

只有JSSE。

KeyManager要使用的算法。这将默认为Sun JVM的KeyManagerFactory.getDefaultAlgorithm()返回 值 SunX509IBM JVM返回 IbmX509对于其他供应商,请查看JVM文档的默认值。

protocols

在与客户端通信时支持的协议的名称。这应该是以下任何组合的列表:

  • SSLv2Hello
  • 的SSLv2
  • 在SSLv3
  • 使用TLSv1
  • TLSv1.1
  • TLSv1.2工作
  • 所有

列表中的每个标记都可以加上加号(“+”)或减号(“ - ”)。一个加号添加协议,一个减号从当前列表中删除。列表从空列表开始构建。

令牌all是一个别名 SSLv2Hello,TLSv1,TLSv1.1,TLSv1.2

请注意,SSLv2Hello基于OpenSSL的安全连接器将被忽略。如果为基于OpenSSL的安全连接器指定了多个协议,它将始终支持SSLv2Hello如果指定了一个协议,则不支持 SSLv2Hello

需要注意的是SSLv2SSLv3本身不安全。

如果未指定,all将使用默认值

revocationEnabled

只有JSSE。

JSSE提供者是否启用证书吊销检查?如果 certificateRevocationListFile设置,那么这个属性被忽略,吊销检查始终处于启用状态。此属性用于启用通过其他方式为当前JSSE提供者配置的撤销检查。如果未指定,false则使用默认值 

sessionCacheSize

只有JSSE。

在会话缓存中维护的SSL会话数。使用0来指定无限制的高速缓存大小。如果未指定,则使用默认值0。

sessionTimeout

只有JSSE。

在SSL会话建立之后它将超时的时间(秒)。使用0指定无限超时。如果未指定,则使用默认值86400(24小时)。

sslProtocol

只有JSSE。

要使用的SSL协议(单个值可能启用多个协议 - 有关详细信息,请参阅JVM文档)。如果未指定,则默认为TLS允许的值可以从JVM文档获得,用于在创建SSLContext例如 Oracle Java 7时的算法的允许值 注意:这个属性和之间有重叠 protocols

trustManagerClassName

只有JSSE。

用于验证客户端证书的自定义信任管理器类的名称。该类必须有一个零参数构造函数,并且还必须实现javax.net.ssl.X509TrustManager如果设置此属性,则可以忽略信任存储属性。

truststoreAlgorithm

只有JSSE。

用于信任库的算法。如果未指定,javax.net.ssl.TrustManagerFactory.getDefaultAlgorithm()则使用返回的默认值 

truststoreFile

只有JSSE。

用于验证客户端证书的信任存储文件。默认值为javax.net.ssl.trustStore系统属性的值如果既不设置此属性也不设置默认系统属性,则不会配置信任存储。相对路径将被解决$CATALINA_BASE此属性也可以使用URL。

truststorePassword

只有JSSE。

访问信任存储的密码。默认值为javax.net.ssl.trustStorePassword系统属性的值 如果该属性为空,则不会配置信任存储密码。如果指定了无效的信任存储密码,将记录一个警告,并尝试访问信任存储,而不使用将跳过信任存储内容的验证的密码。

truststoreProvider

只有JSSE。

用于服务器证书的信任商提供商的名称。默认值为javax.net.ssl.trustStoreProvider系统属性的值 如果该属性为空,则将该值keystoreProvider用作默认值。如果此属性,默认系统属性和 keystoreProvider设置都不是以优先顺序遍历已注册的提供程序列表,并且使用了支持的第一个提供程序 truststoreType

truststoreType

只有JSSE。

用于信任存储的密钥库的类型。默认值为javax.net.ssl.trustStoreType系统属性的值如果该属性为空,则为该TLS虚拟主机配置单个证书,并且该证书的身份keystoreType不是PKCS12默认的keystoreType,因此该证书将是 单个证书。如果这些都不是默认值,那么默认值为JKS

SSL支持 - 证书

 

属性 描述
certificateFile

包含服务器证书的文件的名称。格式是PEM编码的。相对路径将被解决 $CATALINA_BASE

除了证书,文件还可以包含作为任选元素DH参数和/或用于临时密钥的EC曲线名称,如通过产生openssl dhparamopenssl ecparam分别。相应的OpenSSL命令的输出可以简单地连接到证书文件。

certificateChainFile

包含与使用的服务器证书关联的证书链的文件的名称。格式是PEM编码的。相对路径将被解决 $CATALINA_BASE

Tomcat使用的证书链不应包含服务器证书作为其第一个元素。

请注意,当为不同类型使用多个证书时,它们都必须使用相同的证书链。

certificateKeyAlias

只有JSSE。

用于密钥库中的服务器密钥和证书的别名。如果未指定,将使用从密钥库读取的第一个密钥。从密钥库中读取密钥的顺序取决于实现。键可能与从添加到的密钥库中读取的顺序相同。如果密钥库中存在多个密钥,则强烈建议您配置一个keyAlias,以确保使用正确的密钥。

certificateKeyFile

包含服务器私钥的文件的名称。格式是PEM编码的。默认值是certificateFile的值, 在这种情况下,证书和私钥都必须在此文件中(NOT RECOMMENDED)。相对路径将被解决$CATALINA_BASE

certificateKeyPassword

用于从指定文件访问与服务器证书相关联的私钥的密码。

如果未指定,则JSSE的默认行为是使用 certificateKeystorePassword对于OpenSSL,默认行为是不使用密码。

certificateKeystoreFile

只有JSSE。

存储要加载的服务器证书和密钥的密钥库文件的路径名。默认情况下,路径名.keystore是运行Tomcat的用户的操作系统主目录中的文件 如果您keystoreType不需要使用文件""(空字符串)或NONE此参数。相对路径将被解决 $CATALINA_BASE此属性也可以使用URL。

certificateKeystorePassword

只有JSSE。

用于访问包含服务器的私钥和证书的密钥库的密码。如果未指定,changeit将使用默认值 

certificateKeystoreProvider

只有JSSE。

要用于服务器证书的密钥库提供程序的名称。如果未指定,javax.net.ssl.keyStoreProvider则使用系统属性的值 如果不设置此属性和系统属性,则以优先级顺序遍历注册的提供程序列表,并且使用支持该属性的第一个提供程序keystoreType

certificateKeystoreType

只有JSSE。

要用于服务器证书的密钥库文件的类型。如果未指定,javax.net.ssl.keyStoreType则使用系统属性的值 如果此属性和系统属性都不设置,则默认值为“ JKS”。用来。

type

证书的类型。这用于识别与证书兼容的密码。它必须是一个UNDEFINED, RSADSSEC如果只有一个 证书嵌套在SSLHostConfig 该属性中,那么该属性不是必需的,并且将默认为 UNDEFINED如果多个证书嵌套在一个内部,SSLHostConfig则此属性是必需的,每个证书必须具有唯一的类型。

SSL支持 - 连接器 - NIO和NIO2

当启用APR / native时,连接器将默认使用通过JSSE的OpenSSL,根据所使用的处理器,它可能比JSSE Java实现更为优化,并且可以与许多商业加速器组件相辅相成。

以下NIO和NIO2 SSL配置属性不是特定于虚拟主机,因此必须在连接器上进行配置。

属性 描述
sniParseLimit

为了实现SNI支持,Tomcat必须解析在新的TLS连接(客户端hello)上收到的第一个TLS消息,以提取所请求的服务器名称。该消息需要缓冲,因此可以将其传递给JSSE实现,以进行正常的TLS处理。在理论上,这个第一个消息可能非常大,但实际上它通常是几百个字节。此属性设置Tomcat将缓冲的最大邮件大小。如果邮件超出此大小,则连接将被配置为客户端未指定服务器名称。如果未指定,将使用默认值65536(64k)。

sslImplementationName

要使用的SSL实现的类名。如果未指定,并且没有安装tomcat-native库,那么org.apache.tomcat.util.net.jsse.JSSEImplementation 将使用JVM的默认JSSE提供程序的默认值。请注意,JVM可以配置为使用不同的JSSE提供程序作为默认值。Tomcat还捆绑了由OpenSSL支持的JSSE的特殊SSL实现。要启用它,应该启用本地库,就像打算使用APR连接器一样,Tomcat将自动启用它,并且该属性的默认值变为org.apache.tomcat.util.net.openssl.OpenSSLImplementation在这种情况下,可以使用来自JSSE和OpenSSL配置样式的属性,只要两种类型不混合(例如,

SSL支持 - 连接器 - NIO和NIO2(已弃用)

以下NIO和NIO2 SSL配置属性已被弃用,支持默认 SSLHostConfig元素。

属性 描述
algorithm

这是keyManagerAlgorithm默认SSLHostConfig 元素属性的别名

ciphers

这是ciphers默认SSLHostConfig元素属性 的别名

clientAuth

这是certificateVerification默认SSLHostConfig 元素属性的别名

crlFile

这是certificateRevocationFile 默认SSLHostConfig元素属性 的别名

keyAlias

这是嵌套在默认SSLHostConfig元素certificateKeyAlias中的第一个Certificate元素的属性的 别名

keyPass

这是嵌套在默认SSLHostConfig元素certificateKeyPassword中的第一个Certificate元素的属性的 别名

keystoreFile

这是嵌套在默认SSLHostConfig元素certificateKeystoreFile中的第一个Certificate元素的属性的 别名

keystorePass

这是嵌套在默认SSLHostConfig 元素certificateKeystorePassword 中的第一个 Certificate元素的属性的别名

keystoreProvider

这是嵌套在默认SSLHostConfig 元素certificateKeystoreProvider 中的第一个 Certificate元素的属性的别名

keystoreType

这是嵌套在默认SSLHostConfig元素certificateKeystoreType中的第一个Certificate元素的属性的 别名

sessionCacheSize

这是sessionCacheSize默认SSLHostConfig 元素属性的别名

sessionTimeout

这是sessionTimeout默认SSLHostConfig 元素属性的别名

sslEnabledProtocols

这是protocols默认SSLHostConfig 元素属性的别名

sslProtocol

这是sslProtocol默认SSLHostConfig 元素属性的别名

trustManagerClassName

这是trustManagerClassName默认SSLHostConfig 元素属性的别名

trustMaxCertLength

这是certificateVerificationDepth 默认SSLHostConfig元素属性 的别名

truststoreAlgorithm

这是truststoreAlgorithm默认SSLHostConfig 元素属性的别名

truststoreFile

这是truststoreFile默认SSLHostConfig 元素属性的别名

truststorePass

这是truststorePassword默认SSLHostConfig 元素属性的别名

truststoreProvider

这是truststoreProvider默认SSLHostConfig 元素属性的别名

truststoreType

这是truststoreType默认SSLHostConfig 元素属性的别名

useServerCipherSuitesOrder

这是honorCipherOrder默认SSLHostConfig 元素属性的别名

SSL支持 - 连接器 - APR / Native(已弃用)

启用APR /本机时,HTTPS连接器将使用套接字轮询器进行保持活动,从而提高服务器的可扩展性。它还使用OpenSSL,它可能比JSSE更加优化,这取决于所使用的处理器,并且可以与许多商业加速器组件相辅相成。与HTTP连接器不同,HTTPS连接器不能使用sendfile来优化静态文件处理。

HTTPS APR /本地连接器具有与HTTP APR /本机连接器相同的属性,但添加了特定于OpenSSL的OpenSSL。有关使用OpenSSL的详细信息,请参阅OpenSSL文档和可用的许多书籍(请参阅官方OpenSSL网站)。APR /本机连接器的SSL特定属性是:

属性 描述
SSLCACertificateFile

这是caCertificateFile 默认SSLHostConfig元素属性 的别名

SSLCACertificatePath

这是caCertificatePath 默认SSLHostConfig元素属性 的别名

SSLCARevocationFile

这是certificateRevocationFile 默认SSLHostConfig元素属性 的别名

SSLCARevocationPath

这是certificateRevocationPath 默认SSLHostConfig元素属性 的别名

SSLCertificateFile

这是嵌套在默认SSLHostConfig 元素certificateFile中的第一个Certificate元素的属性的别名

SSLCertificateKeyFile

这是嵌套在默认SSLHostConfig 元素certificateKeyFile中的第一个Certificate元素的属性的别名

SSLCipherSuite

这是ciphers默认SSLHostConfig元素属性 的别名

SSLDisableCompression

这是disableCompression默认SSLHostConfig 元素属性的别名

SSLHonorCipherOrder

这是honorCipherOrder默认SSLHostConfig 元素属性的别名

SSLPassword

这是嵌套在默认SSLHostConfig元素certificateKeyPassword中的第一个Certificate元素的属性的 别名

SSLProtocol

这是protocols默认SSLHostConfig 元素属性的别名

SSLVerifyClient

这是certificateVerification默认SSLHostConfig 元素属性的别名

SSLVerifyDepth

这是certificateVerificationDepth 默认SSLHostConfig元素属性 的别名

SSLDisableSessionTickets

这是disableSessionTickets默认SSLHostConfig 元素属性的别名

连接器比较

以下是一个小图,显示了连接器的不同之处。

  Java Nio连接器
NIO
Java Nio2连接器
NIO2
APR /本机连接器
APR
班级名称 Http11NioProtocol Http11Nio2Protocol Http11AprProtocol
Tomcat版本 6.x起 8.x起 5.5.x起
支持轮询
轮询尺寸 maxConnections maxConnections maxConnections
读请求头 非阻塞 非阻塞 非阻塞
读请求体 闭塞 闭塞 闭塞
写响应标题和身体 闭塞 闭塞 闭塞
等待下一个请求 非阻塞 非阻塞 非阻塞
SSL支持 Java SSL或OpenSSL Java SSL或OpenSSL OpenSSL的
SSL握手 非阻塞 非阻塞 闭塞
最大连接数 maxConnections maxConnections maxConnections

 

业务热线电话:(+86)021-52765253 021-61172807      上海哲涛网络科技有限公司版权所有 © 2005-2018       沪ICP备06058430-1号

沪公网安备 31011302000898号

校睿宝,培训机构学员管理软件,教师工资计算软件,消课管理软件!

手机智慧课堂答题,短信答题,微信答题!

数据备份软件,文件数据备份软件,文件备份软件,B/S架构备份软件,分布式计算机备份软件!