HTTP连接器(安全证书配置、HTTPs设置) 若需安全证书可通过哲涛EasyHttps申请
目录
- 介绍
- 属性
- 共同属性
- 标准实施
- Java TCP socket属性
- NIO具体配置
- NIO2具体配置
- APR /本机特定配置
- 嵌套组件
- 特殊功能
- HTTP / 1.1和HTTP / 1.0支持
- HTTP / 2支持
- 代理支持
- SSL支持
- SSL支持 - SSLHostConfig
- SSL支持 - 证书
- SSL支持 - 连接器 - NIO和NIO2
- SSL支持 - 连接器 - NIO和NIO2(已弃用)
- SSL支持 - 连接器 - APR / Native(已弃用)
- 连接器比较
介绍
的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。如果未指定, |
enableLookups |
设置为 |
maxHeaderCount |
容器允许的请求中的最大标头数。包含比指定限制更多的标头的请求将被拒绝。值小于0表示无限制。如果未指定,则使用默认值100。 |
maxParameterCount |
容器自动解析的参数和值对(GET plus POST)的最大数量。超出此限制的参数和值对将被忽略。值小于0表示无限制。如果未指定,则使用默认值10000。请注意, |
maxPostSize |
POST的最大大小(以字节为单位),将由容器FORM URL参数解析来处理。通过将此属性设置为小于零的值,可以禁用限制。如果未指定,则此属性设置为2097152(2兆字节)。请注意, |
maxSavePostSize |
在FORM或CLIENT-CERT身份验证期间,将由容器保存/缓冲的POST的最大大小(以字节为单位)。对于这两种类型的身份验证,POST将在用户进行身份验证之前进行保存/缓冲。对于CLIENT-CERT认证,POST在SSL握手期间进行缓冲,缓冲区在处理请求时清空。对于FORM身份验证,POST将被保存,同时用户被重定向到登录表单,并保留,直到用户成功认证或与身份验证请求相关联的会话过期。可以通过将此属性设置为-1来禁用该限制。将属性设置为零将在身份验证期间禁用POST数据的保存。如果没有指定, |
parseBodyMethods |
以逗号分隔的HTTP方法列表,请求主体将被解析为与POST相同的请求参数。这对于希望支持PUT请求的POST样式语义的RESTful应用程序很有用。请注意,除了 |
port |
此连接器 将创建服务器套接字并等待传入连接的TCP端口号。您的操作系统将只允许一个服务器应用程序侦听特定IP地址上的特定端口号。如果使用特殊值0(零),则Tomcat将随机选择一个空闲端口用于此连接器。这通常仅在嵌入式和测试应用程序中有用。 |
protocol |
设置协议来处理传入流量。默认值是 |
proxyName |
如果此连接器用于代理配置,请配置此属性以指定要调用的服务器名称 |
proxyPort |
如果此连接器用于代理配置,请配置此属性以指定要呼叫返回的服务器端口 |
redirectPort |
如果此连接器支持非SSL请求,并且接收到匹配 |
scheme |
将此属性设置为您希望通过调用返回的协议的名称 |
secure |
将此属性设置为 |
sendReasonPhrase |
将此属性设置为 注意:此选项已弃用,将在Tomcat 9中删除。原因短语将不会发送。 |
URIEncoding |
这指定了%xx解码URL之后用于解码URI字节的字符编码。如果未指定,将使用UTF-8,除非 |
useBodyEncodingForURI |
这将指定contentType中指定的编码是否应用于URI查询参数,而不是使用URIEncoding。存在与Tomcat 4.1.x兼容的此设置,其中contentType中指定的编码或使用Request.setCharacterEncoding方法显式设置的编码也用于来自URL的参数。默认值为 注意: 1)此设置仅适用于请求的查询字符串。不像 |
useIPVHosts |
将此属性设置 |
xpoweredBy |
将此属性设置 |
标准实施
标准HTTP连接器(NIO,NIO2和APR /本机)除了上面列出的常见连接器属性之外,还支持以下属性。
属性 | 描述 |
---|---|
acceptCount |
所有可能的请求处理线程正在使用时,传入连接请求的最大队列长度。当队列满时收到的任何请求都将被拒绝。默认值为100。 |
acceptorThreadCount |
用于接受连接的线程数。在多CPU机器上增加这个值,虽然你永远不会真的需要更多的 |
acceptorThreadPriority |
接受者线程的优先级。用于接受新连接的线程。默认值为 |
address |
对于具有多个IP地址的服务器,此属性指定将在指定端口上侦听哪个地址。默认情况下,连接器将监听所有本地地址。除非JVM使用系统属性进行其他配置,否则使用基于Java的连接器(NIO,NIO2)将在配置为 |
allowedTrailerHeaders |
默认情况下,当处理分块输入时,Tomcat将忽略所有的尾部标题。对于要处理的标题,必须将其添加到以逗号分隔的标题名称列表中。 |
bindOnInit |
控制连接器使用的插座是否绑定。默认情况下,当连接器被破坏时,连接器启动和绑定时,它将被绑定。如果设置为 |
clientCertProvider |
当客户端证书信息以不同于其实例的形式呈现时 |
compressibleMimeType |
该值是可以使用HTTP压缩的MIME类型的逗号分隔列表。默认值为 |
compression |
连接器可以使用HTTP / 1.1 GZIP压缩来尝试保存服务器带宽。参数的可接受值为“关闭”(禁用压缩),“开”(允许压缩,导致文本数据压缩),“强制”(强制所有情况下的压缩)或数字整数值相当于“on”,但指定输出压缩前的最小数据量)。如果内容长度不知道,并且压缩设置为“开”或更积极,则输出也将被压缩。如果未指定,则此属性设置为“关闭”。 注意:使用压缩(节省带宽)和使用sendfile功能(节省CPU周期)之间存在折衷。如果连接器支持sendfile功能,例如NIO连接器,则使用sendfile将优先于压缩。症状将是静态文件大于48 Kb将被未压缩发送。您可以通过设置 |
compressionMinSize |
如果压缩设置为“on”,则该属性可用于在输出压缩之前指定最小数据量。如果未指定,则此属性默认为“2048”。 |
connectionLinger |
此连接器使用的插座 在关闭时将停留的秒数。默认值是 |
connectionTimeout |
连接器在接受连接后等待的请求URI行的毫秒数。使用值-1表示无(即无限)超时。默认值为60000(即60秒),但请注意Tomcat附带的标准server.xml将其设置为20000(即20秒)。除非disableUploadTimeout设置为 |
connectionUploadTimeout |
指定正在进行数据上传时使用的超时(以毫秒为单位)。这仅在disableUploadTimeout设置为有效时才会生效 |
disableUploadTimeout |
此标志允许servlet容器在数据上传期间使用不同的通常较长的连接超时。如果未指定,则此属性设置为 |
executor |
对Executor 元素中的名称的引用。如果设置了此属性,并且命名的执行程序存在,则连接器将使用执行程序,并且所有其他线程属性将被忽略。请注意,如果未为连接器指定共享执行程序,则连接器将使用私有的内部执行程序来提供线程池。 |
executorTerminationTimeoutMillis |
在继续停止连接器的过程之前,私有内部执行者将等待请求处理线程终止的时间。如果未设置,默认值为 |
keepAliveTimeout |
毫秒数这个连接器将等待另一个HTTP请求关闭连接之前。默认值是使用为connectionTimeout属性设置的值 。使用值-1表示无(即无限)超时。 |
maxConnections |
服务器在任何给定时间接受和处理的最大连接数。当达到这个数字时,服务器将接受一个进一步的连接,但不会处理。这个附加连接将被阻塞,直到正在处理的连接数降到maxConnections以下,服务器再次开始接受并重新处理新的连接。请注意,一旦达到限制,操作系统仍然可以接受基于 请注意,对于Windows上的APR / native,配置的值将减少到小于或等于maxConnections的1024的最高倍数。这是出于性能原因。 |
maxCookieCount |
请求的允许的最大Cookie数。小于零的值意味着没有限制。如果未指定,将使用默认值200。 |
maxExtensionSize |
限制块分组HTTP请求中的分机总长度。如果价值是 |
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), |
maxTrailerSize |
限制分块HTTP请求的最后一个块中的尾部头部的总长度。如果价值是 |
minSpareThreads |
最小线程数始终保持运行。如果未指定,则使用默认值 |
noCompressionUserAgents |
该值是一个正则表达式(使用 |
processorCache |
协议处理器缓存处理器对象以加快性能。此设置指定这些对象中有多少被缓存。 |
restrictedUserAgents |
该值是一个正则表达式(使用 |
server |
覆盖http响应的服务器头。如果设置,此属性的值将覆盖Web应用程序设置的任何服务器头文件。如果未设置,则使用应用程序指定的任何值。如果应用程序未指定值,则不会设置服务器头。 |
serverRemoveAppProvidedValues |
如果 |
SSLEnabled |
使用此属性可以在连接器上启用SSL流量。要在连接器上打开SSL握手/加密/解密,请将此值设置为 |
tcpNoDelay |
如果设置为 |
threadPriority |
JVM中请求处理线程的优先级。默认值为 |
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的值等于设置为 |
socket.soLingerTime |
(int)套接字的值以秒为单位so lang选项(SO_LINGER)。这相当于标准属性 connectionLinger。这两个属性 |
socket.soTimeout |
这相当于标准属性 connectionTimeout。 |
socket.performanceConnectionTime |
(int)性能设置的第一个值。请参阅 套接字性能选项。必须设置所有三个性能属性,否则将使用所有三个JVM默认值。 |
socket.performanceLatency |
(int)性能设置的第二个值。请参阅 套接字性能选项。必须设置所有三个性能属性,否则将使用所有三个JVM默认值。 |
socket.performanceBandwidth |
(int)性能设置的第三个值。请参阅 套接字性能选项。必须设置所有三个性能属性,否则将使用所有三个JVM默认值。 |
socket.unlockTimeout |
(int)套接字解锁的超时。当连接器停止时,它将尝试通过打开一个连接器来释放接受器线程。默认值为 |
NIO具体配置
以下属性特定于NIO连接器。
属性 | 描述 |
---|---|
pollerThreadCount |
(int)用于轮询事件运行的线程数。默认值为 |
pollerThreadPriority |
(int)轮询线程的优先级。默认值为 |
selectorTimeout |
(int)在轮询器的select()上超时的时间(以毫秒为单位)。该值很重要,因为连接清理在同一个线程上完成,因此不要将此值设置为非常高的值。默认值为 |
useSendfile |
(bool)使用此属性启用或禁用sendfile功能。默认值为 |
socket.directBuffer |
(bool)布尔值,是否使用直接ByteBuffers或java映射ByteBuffers。如果 |
socket.directSslBuffer |
(bool)布尔值,是否使用直接ByteBuffers或java映射的ByteBuffers作为SSL缓冲区。如果 |
socket.appReadBufSize |
(int)在Tomcat中打开的每个连接都与读取ByteBuffer相关联。此属性控制此缓冲区的大小。默认情况下,读取缓冲区大小为 |
socket.appWriteBufSize |
(int)在Tomcat中打开的每个连接都与写入ByteBuffer相关联。此属性控制此缓冲区的大小。默认情况下,这个写缓冲区大小为 |
socket.bufferPool |
(int)NIO连接器使用一个名为NioChannel的类来保存链接到套接字的元素。为了减少垃圾收集,NIO连接器缓存这些通道对象。此值指定此缓存的大小。默认值为 |
socket.bufferPoolSize |
(int)NioChannel池也可以是基于大小的,不是基于对象的。大小计算如下: |
socket.processorCache |
(int)Tomcat将缓存SocketProcessor对象以减少垃圾回收。整数值最多指定要保存在缓存中的对象数量。默认是 |
socket.keyCache |
(int)Tomcat将缓存KeyAttachment对象以减少垃圾回收。整数值最多指定要保存在缓存中的对象数量。默认是 |
socket.eventCache |
(int)Tomcat将缓存PollerEvent对象以减少垃圾回收。整数值最多指定要保存在缓存中的对象数量。默认是 |
selectorPool.maxSelectors |
(int)要在池中使用的最大选择器,以减少选择器争用。当命令行 |
selectorPool.maxSpareSelectors |
(int)要在池中使用的最大备用选择器,以减少选择器争用。当选择器返回到池时,系统可以决定保留它或让它被GC。当命令行 |
command-line-options |
以下命令行选项可用于NIO连接器: |
NIO2具体配置
以下属性特定于NIO2连接器。
属性 | 描述 |
---|---|
useSendfile |
(bool)使用此属性启用或禁用sendfile功能。默认值为 |
socket.directBuffer |
(bool)布尔值,是否使用直接ByteBuffers或java映射ByteBuffers。如果 |
socket.directSslBuffer |
(bool)布尔值,是否使用直接ByteBuffers或java映射的ByteBuffers作为SSL缓冲区。如果 |
socket.appReadBufSize |
(int)在Tomcat中打开的每个连接都与读取ByteBuffer相关联。此属性控制此缓冲区的大小。默认情况下,读取缓冲区大小为 |
socket.appWriteBufSize |
(int)在Tomcat中打开的每个连接都与写入ByteBuffer相关联。此属性控制此缓冲区的大小。默认情况下,这个写缓冲区大小为 |
socket.bufferPool |
(int)NIO2连接器使用一个名为Nio2Channel的类,它保存链接到套接字的元素。为了减少垃圾回收,NIO2连接器缓存这些通道对象。此值指定此缓存的大小。默认值为 |
socket.processorCache |
(int)Tomcat将缓存SocketProcessor对象以减少垃圾回收。整数值最多指定要保存在缓存中的对象数量。默认是 |
APR /本机特定配置
以下属性特定于APR /本机连接器。
属性 | 描述 |
---|---|
deferAccept |
设置该 |
ipv6v6only |
如果在双栈系统上侦听IPv6地址,连接器只能侦听IPv6地址?如果未指定 |
pollerThreadCount |
用于轮询的线程数保持活动连接。在Windows上,选择默认值,以便每个线程管理的套接字小于1024.对于Linux,默认值为1.在Windows上更改默认值可能会对性能产生负面影响。 |
pollTime |
轮询电话的持续时间(微秒)。降低此值会稍微降低连接在某些情况下保持活动的延迟,但会在进行更多的轮询呼叫时使用更多的CPU。默认值为2000(2ms)。 |
sendfileSize |
负责异步发送静态文件的轮询器的套接字数量可以在给定时间保持。额外的连接将立即关闭,无需发送任何数据(导致客户端的零长度文件)。请注意,在大多数情况下,sendfile是一个将立即返回(由内核进行“同步”)的调用,并且不会使用sendfile轮询器,因此可以同时发送的静态文件数量多大于规定量。默认值为1024。 |
threadPriority |
(int)接受者和轮询线程的优先级。默认值为 |
useSendfile |
(bool)使用此属性启用或禁用sendfile功能。默认值为 |
嵌套组件
首先在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升级协议文档。
代理支持
在proxyName
和proxyPort
当Tomcat在代理服务器上运行的属性都可以使用。这些属性会修改返回给调用request.getServerName()
和request.getServerPort()
方法的Web应用程序的值 ,这些值通常用于为重定向创建绝对URL。不配置这些属性,返回的值将反映从代理服务器接收到的连接的服务器名称和端口,而不是客户端指示原始请求的服务器名称和端口。
有关更多信息,请参阅 代理支持如何。
SSL支持
您可以启用这个特定实例支持SSL 连接器通过设置SSLEnabled
属性 true
。
您还需要设置scheme
和secure
属性值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配置属性的支持。
SSL支持 - SSLHostConfig
属性 | 描述 |
---|---|
certificateRevocationFile |
包含证书颁发机构的连接证书吊销列表的文件的名称。格式是PEM编码的。如果未定义,将不会针对证书吊销列表检查客户端证书(除非使用基于OpenSSL的连接器并 定义了certificateRevocationPath)。相对路径将被解决 |
certificateRevocationPath |
只有OpenSSL 包含证书颁发机构的证书吊销列表的目录的名称。格式是PEM编码的。相对路径将被解决 |
certificateVerification |
设置为 |
certificateVerificationDepth |
验证客户端证书时允许的中间证书的最大数量。如果未指定,将使用默认值10。 |
caCertificateFile |
只有OpenSSL 包含可信证书颁发机构的级联证书的文件的名称。格式是PEM编码的。 |
caCertificatePath |
只有OpenSSL 包含可信证书颁发机构的证书的目录的名称。格式是PEM编码的。 |
ciphers |
使用OpenSSL语法的密码。(有关支持的密码列表和语法,请参阅OpenSSL文档)。或者,可以使用使用标准OpenSSL密码名称或标准JSSE密码名称的逗号分隔的密码列表。 从基于JSSE的连接器的OpenSSL语法转换为JSSE密码时,OpenSSL语法解析的行为与OpenSSL 1.1.0开发分支的行为保持一致。 只会使用SSL实现所支持的密码。 如果未指定,将使用默认值(使用OpenSSL符号) 请注意,默认情况下,将密码定义的顺序视为优先顺序。见 |
disableCompression |
只有OpenSSL 配置压缩是否被禁用。默认是 |
disableSessionTickets |
只有OpenSSL 禁用使用TLS会话单(RFC 4507)(如果设置为) |
honorCipherOrder |
设置为 |
hostName |
SSL主机的名称。这应该是完全合格的域名(例如 |
insecureRenegotiation |
只有OpenSSL 配置是否允许不安全的重新协商。默认是 |
keyManagerAlgorithm |
只有JSSE。 将 |
protocols |
在与客户端通信时支持的协议的名称。这应该是以下任何组合的列表:
列表中的每个标记都可以加上加号(“+”)或减号(“ - ”)。一个加号添加协议,一个减号从当前列表中删除。列表从空列表开始构建。 令牌 请注意, 需要注意的是 如果未指定, |
revocationEnabled |
只有JSSE。 JSSE提供者是否启用证书吊销检查?如果 certificateRevocationListFile设置,那么这个属性被忽略,吊销检查始终处于启用状态。此属性用于启用通过其他方式为当前JSSE提供者配置的撤销检查。如果未指定, |
sessionCacheSize |
只有JSSE。 在会话缓存中维护的SSL会话数。使用0来指定无限制的高速缓存大小。如果未指定,则使用默认值0。 |
sessionTimeout |
只有JSSE。 在SSL会话建立之后它将超时的时间(秒)。使用0指定无限超时。如果未指定,则使用默认值86400(24小时)。 |
sslProtocol |
只有JSSE。 要使用的SSL协议(单个值可能启用多个协议 - 有关详细信息,请参阅JVM文档)。如果未指定,则默认为 |
trustManagerClassName |
只有JSSE。 用于验证客户端证书的自定义信任管理器类的名称。该类必须有一个零参数构造函数,并且还必须实现 |
truststoreAlgorithm |
只有JSSE。 用于信任库的算法。如果未指定, |
truststoreFile |
只有JSSE。 用于验证客户端证书的信任存储文件。默认值为 |
truststorePassword |
只有JSSE。 访问信任存储的密码。默认值为 |
truststoreProvider |
只有JSSE。 用于服务器证书的信任商提供商的名称。默认值为 |
truststoreType |
只有JSSE。 用于信任存储的密钥库的类型。默认值为 |
SSL支持 - 证书
属性 | 描述 |
---|---|
certificateFile |
包含服务器证书的文件的名称。格式是PEM编码的。相对路径将被解决 除了证书,文件还可以包含作为任选元素DH参数和/或用于临时密钥的EC曲线名称,如通过产生 |
certificateChainFile |
包含与使用的服务器证书关联的证书链的文件的名称。格式是PEM编码的。相对路径将被解决 Tomcat使用的证书链不应包含服务器证书作为其第一个元素。 请注意,当为不同类型使用多个证书时,它们都必须使用相同的证书链。 |
certificateKeyAlias |
只有JSSE。 用于密钥库中的服务器密钥和证书的别名。如果未指定,将使用从密钥库读取的第一个密钥。从密钥库中读取密钥的顺序取决于实现。键可能与从添加到的密钥库中读取的顺序相同。如果密钥库中存在多个密钥,则强烈建议您配置一个keyAlias,以确保使用正确的密钥。 |
certificateKeyFile |
包含服务器私钥的文件的名称。格式是PEM编码的。默认值是certificateFile的值, 在这种情况下,证书和私钥都必须在此文件中(NOT RECOMMENDED)。相对路径将被解决 |
certificateKeyPassword |
用于从指定文件访问与服务器证书相关联的私钥的密码。 如果未指定,则JSSE的默认行为是使用 certificateKeystorePassword。对于OpenSSL,默认行为是不使用密码。 |
certificateKeystoreFile |
只有JSSE。 存储要加载的服务器证书和密钥的密钥库文件的路径名。默认情况下,路径名 |
certificateKeystorePassword |
只有JSSE。 用于访问包含服务器的私钥和证书的密钥库的密码。如果未指定, |
certificateKeystoreProvider |
只有JSSE。 要用于服务器证书的密钥库提供程序的名称。如果未指定, |
certificateKeystoreType |
只有JSSE。 要用于服务器证书的密钥库文件的类型。如果未指定, |
type |
证书的类型。这用于识别与证书兼容的密码。它必须是一个 |
SSL支持 - 连接器 - NIO和NIO2
当启用APR / native时,连接器将默认使用通过JSSE的OpenSSL,根据所使用的处理器,它可能比JSSE Java实现更为优化,并且可以与许多商业加速器组件相辅相成。
以下NIO和NIO2 SSL配置属性不是特定于虚拟主机,因此必须在连接器上进行配置。
属性 | 描述 |
---|---|
sniParseLimit |
为了实现SNI支持,Tomcat必须解析在新的TLS连接(客户端hello)上收到的第一个TLS消息,以提取所请求的服务器名称。该消息需要缓冲,因此可以将其传递给JSSE实现,以进行正常的TLS处理。在理论上,这个第一个消息可能非常大,但实际上它通常是几百个字节。此属性设置Tomcat将缓冲的最大邮件大小。如果邮件超出此大小,则连接将被配置为客户端未指定服务器名称。如果未指定,将使用默认值 |
sslImplementationName |
要使用的SSL实现的类名。如果未指定,并且没有安装tomcat-native库,那么 |
SSL支持 - 连接器 - NIO和NIO2(已弃用)
以下NIO和NIO2 SSL配置属性已被弃用,支持默认 SSLHostConfig元素。
属性 | 描述 |
---|---|
algorithm |
这是 |
ciphers |
这是 |
clientAuth |
这是 |
crlFile |
这是 |
keyAlias |
这是嵌套在默认SSLHostConfig元素 |
keyPass |
这是嵌套在默认SSLHostConfig元素 |
keystoreFile |
这是嵌套在默认SSLHostConfig元素 |
keystorePass |
这是嵌套在默认SSLHostConfig 元素 |
keystoreProvider |
这是嵌套在默认SSLHostConfig 元素 |
keystoreType |
这是嵌套在默认SSLHostConfig元素 |
sessionCacheSize |
这是 |
sessionTimeout |
这是 |
sslEnabledProtocols |
这是 |
sslProtocol |
这是 |
trustManagerClassName |
这是 |
trustMaxCertLength |
这是 |
truststoreAlgorithm |
这是 |
truststoreFile |
这是 |
truststorePass |
这是 |
truststoreProvider |
这是 |
truststoreType |
这是 |
useServerCipherSuitesOrder |
这是 |
SSL支持 - 连接器 - APR / Native(已弃用)
启用APR /本机时,HTTPS连接器将使用套接字轮询器进行保持活动,从而提高服务器的可扩展性。它还使用OpenSSL,它可能比JSSE更加优化,这取决于所使用的处理器,并且可以与许多商业加速器组件相辅相成。与HTTP连接器不同,HTTPS连接器不能使用sendfile来优化静态文件处理。
HTTPS APR /本地连接器具有与HTTP APR /本机连接器相同的属性,但添加了特定于OpenSSL的OpenSSL。有关使用OpenSSL的详细信息,请参阅OpenSSL文档和可用的许多书籍(请参阅官方OpenSSL网站)。APR /本机连接器的SSL特定属性是:
属性 | 描述 |
---|---|
SSLCACertificateFile |
这是 |
SSLCACertificatePath |
这是 |
SSLCARevocationFile |
这是 |
SSLCARevocationPath |
这是 |
SSLCertificateFile |
这是嵌套在默认SSLHostConfig 元素 |
SSLCertificateKeyFile |
这是嵌套在默认SSLHostConfig 元素 |
SSLCipherSuite |
这是 |
SSLDisableCompression |
这是 |
SSLHonorCipherOrder |
这是 |
SSLPassword |
这是嵌套在默认SSLHostConfig元素 |
SSLProtocol |
这是 |
SSLVerifyClient |
这是 |
SSLVerifyDepth |
这是 |
SSLDisableSessionTickets |
这是 |
连接器比较
以下是一个小图,显示了连接器的不同之处。
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 |