Tomcat 7 HTTP 连接器(四)-特殊功能

3 嵌套组件

这个时候没有。

4 特殊功能

4.1 HTTP/1.1和HTTP/1.0的支持

连接器支持在RFC 2616中描述的HTTP/1.1协议的所有必需功能,包括持久连接,管道,预期和分块编码所需的功能。如果客户端(通常是浏览器)只支持HTTP/1.0, 连接器将优雅地向下兼容以支持该协议。启用这种支持,没有特殊的配置要求。该连接器还支持HTTP/1.0长连接。

RFC 2616规定,HTTP服务器总是在它们响应的开头加上它们宣称支持的最高的HTTP版本。因此,此 连接器将总是在其响应开头返回HTTP/1.1

4.2 代理支持

当Tomcat部署在代理服务器的后面的时候,proxyName和proxyPort属性可以被使用。这些属性修改 web服务器调用的request.getServerName()和request.getServerPort() 方法的值,这是经常被用来构造重 定向de 绝对路径的URL。如果不配置这些属性,返回的值将反映代理服务器接收连接的服务器名称和端口,而不是客户端定向原始请求的服务器名称和端口。

有关详细信息,请参阅 如何使用代理服务器支持

4.3 SSL支持

通过设置启用SSL属性为true,您可以启用SSL支持此连接器的特定实例 。

你还需要设置scheme 和secure  属性的值分别为https和true,传递正确的信息到servlet。

BIO与NIO连接器使用JSSE的SSL,而APR / native连接器使用OpenSSL。因此,除了使用不同的属性来配置SSL的APR / native连接器外,还需要以不同的格式提供密钥和证书。

有关详细信息,请参阅文档SSL怎么配置

4.3.1 SSL支持-BIO与NIO

BIO与NIO连接器使用下面的属性来配置SSL:

属性

描述

algorithm

使用的证书编码算法。默认 KeyManagerFactory.getDefaultAlgorithm()返回 Sun JVM的SunX509。IBM的JVM返回 IbmX509。对于其他厂商,请参阅JVM文档的默认值。

allowUnsafeLegacyRenegotiation

允许不安全的传统的TLS重新协商,它有可能允许暴露用户给CVE-2009-3555(处理会话重协商过程中TLS实现存在错误,允许通过中间人攻击,注入任意明文到已存在的TLS会话中。)的情况发生。如果没有指定,默认设置为false。此属性只对不支持RFC 5746(表明伪密码套件TLS_EMPTY_RENEGOTIATION_INFO_SCSV的存在)的JVM有用。JRE / JDK 6update 22起,这是可用的。支持RFC 5746的重新谈判-包括支持不安全的传统重新谈判-是由JVM配置控制的。

ciphers

逗号分隔的这个套接字被允许使用的加密算法列表。默认情况下,在JVM的默认密码将被使用。请注意,这通常意味着,弱输出等级的密码将被包含在列表的可用密码中。密码被指定使用JSSE密码的命名约定。特殊值ALL ,将启用所有支持的密码。这将包括许多不安全。ALL仅用于测试目的。

clientAuth

如果在接受连接之前,你想让从客户端来的SSL协议栈需要一个有效的证书链则设置为true。如果你想让SSL协议栈需要一个客户端证书,设置为want,但如果没有提供将不会失败。设置为false值(这是默认的)将不需要证书链,除非客户端请求采用CLIENT-CERT认证的安全约束保护的资源。

clientCertProvider

当客户端证书信息的以表单形式而不是java.security.cert.X509Certificate实例形式提供时,需要转换之后才可以使用,此属性控制哪个JSSE提供者来执行转换。例如,它是关联AJP连接器,HTTP APR 连接器和 org.apache.catalina.valves.SSLValve。如果没有指定,默认的provider 将被使用。

crlFile

用来验证客户端证书的证书吊销列表。如果没有定义,将不核对证书吊销列表来检查客户端证书。

keyAlias

用于做key库中的服务器证书的别名。如果没有指定将使用在key库中读取的第一个key。

keypass

该密码用于访问指定的keystore文件的服务器证书。默认值是“changeit”。

keystoreFile

要加载的服务器证书存放的keystore文件的路径名。默认情况下,该文件的路径名是“ .keystore”,在操作系统中运行Tomcat的用户的home 目录。如果您的keystoreType不需要文件则可以将keystoreFile设置为“”(空字符串)。

keystorePass

该密码用于访问指定的keystore文件。默认值是keypass属性值。

keystoreProvider

被用于服务器证书的keystore 提供者的名称。如果未指定,将选择按优先顺序注册过的提供者列表的第一个支持keystoreType的提供者。

keystoreType

用于服务器证书的keystore文件的类型。如果没有指定,默认值是“JKS”。

sessionCacheSize

保持在session缓存中的SSL会话的数量。使用0到指定一个无大小限制的缓存。如果没有指定,默认值为0。

sessionTimeout

在创建一个SSL会话后它将超时的时间(以秒为单位)。使用0指定无限制超时。如果没有指定,默认为86400(24小时)。

sslEnabledProtocols

使用的SSL协议的列表。如果未指定,则使用JVM的默认设置。

sslImplementationName

使用的SSL实现的类名。如果未指定, 将使用默认的org.apache.tomcat.util.net.jsse.JSSEImplementation它封装了JVM的默认JSSE提供者。需要注意的是,JVM可以被配置为使用不同的JSSE提供者作为默认值。

sslProtocol

使用的SSL协议版本。如果没有指定,默认是“ TLS”。

trustManagerClassName

一个用来验证客户端证书的自定义信任管理类的名称。这个类必须有一个无参数的构造而且必须实现javax.net.ssl.X509TrustManager。如果设置了这个属性,trust store相关属性将被忽略。

trustMaxCertLength

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

truststoreAlgorithm

该算法用于truststore。如果没有指定,将使用由javax.net.ssl.TrustManagerFactory.getDefaultAlgorithm()返回 的默认值。

truststoreFile

用来验证客户端证书的trust store文件。默认值是javax.net.ssl.trustStore系统属性。如果既没有此属性又没有默认的系统属性设置,则不配置trust store。

truststorePass

访问trust store的密码。默认值是javax.net.ssl.trustStorePassword系统属性。如果该属性是空的,没有trust store密码将被配置。如果指定了一个无效的trust store密码,将会记录警告,并试图没有密码访问trust store,这将跳过验证trust store的内容。

truststoreProvider

用于服务器证书的truststore提供者的名称。默认值是javax.net.ssl.trustStoreProvider系统属性。如果该属性为空,将使用keystoreProvider作为默认值。如果既没有这个属性,也没有默认的keystoreProvider系统属性,按优先顺序遍历已注册提供者列表,选择使用支持 truststoreType第一个提供者。

truststoreType

用于trust store的key store的类型。默认值是javax.net.ssl.trustStoreType系统属性。如果该属性为空,则keystoreType作为默认值。

4.3.2 SSL支持 - APR /Native

APR / Native启用时,HTTPS连接器将使用一个套接字来轮询长连接,以提高服务器的可扩展性。它还使用OpenSSL,这可能比JSSE更优化(取决于 所使用的处理器),并且可以补充许多商业加速器组件。不同于HTTP连接器,HTTPS连接器不能使用的sendfile优化静态文件的处理。

HTTPS APR / Native连接器具有HTTP APR / Native连接器相同的属性,并且增加了OpenSSL的特殊属性。使用OpenSSL的所有详细资料,请参阅OpenSSL资料和许多可用的书籍(请参阅官方OpenSSL的网站)。SSL特有的APR /Native连接器的属性:

属性

描述

SSLCACertificateFile

查看mod_ssl的文档

SSLCACertificatePath

查看mod_ssl的文档

SSLCARevocationFile

查看mod_ssl的文档

SSLCARevocationPath

查看mod_ssl的文档

SSLCertificateChainFile

查看mod_ssl的文档

SSLCACertificateFile

包含受信任的证书颁发机构的拼接的证书文件的名称。是PEM编码的格式。

SSLCACertificatePath

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

SSLCARevocationFile

包含证书颁发机构的拼接的证书吊销列表文件的名称。是PEM编码的格式。

SSLCARevocationPath

包含的证书颁发机构的拼接的证书撤销列表的目录的名称。是PEM编码的格式。

SSLCertificateChainFile

包含连接的certifcates形成的资格证书链的服务器证书的证书颁发机构的的文件的名称。是PEM编码的格式。

SSLCertificateFile

包含服务器证书的文件的名称。是PEM编码的格式。

SSLCertificateKeyFile

包含服务器私钥的文件名称。是PEM编码的格式。默认值是SSLCertificateFile的值,在这种情况下,证书和私钥都必须在这个文件中(不推荐)。

SSLCipherSuite

可用于与客户端进行通信的密码。默认值是“ALL”,其他可接受的值是以“:”分隔的一组密码,(请参阅OpenSSL的文档列表中支持的密码)。

SSLHonorCipherOrder

设置为true(这是默认值)将强制服务器的密码规则(按照SSLCipherSuite设置),而不允许客户端选择密码。

SSLPassword

用于私有密钥加密的口令短语。如果没有提供“SSLPassword”时,回调函数将提示输入口令短语。

SSLProtocol

可被用来与客户端通信的协议。默认值是all,这是等同的SSLv3 +的TLSv1,其他可接受的值是 SSLv2, SSLv3,TLSv1以及用加号连接起来的三个协议的任意组合。请注意,SSLv2协议 本质上是不安全的。

SSLVerifyClient

向客户端要求证书。默认值是“none”,这意味着客户端将不会有机会提交证书。其他可接受的值包括“optional”,“require”和“optionalNoCA”。

SSLVerifyDepth

客户端证书的最大验证深度。默认值是“10”。

4.4连接器的比较

下面是一个小的图表,显示了连接器如何区分。

Java Blocking Connector  BIO

Java Non Blocking Connector  NIO

APR/native Connector   APR

Classname

Http11Protocol

Http11NioProtocol

Http11AprProtocol

Tomcat Version

3.x onwards

6.x onwards

5.5.x onwards

Support Pollin

NO

YES

YES

Polling Size

N/A

maxConnections

maxConnections

Read HTTP Request

Blocking

Non Blocking

Blocking

Read HTTP Body

Blocking

Sim Blocking

Blocking

Write HTTP Response

Blocking

Sim Blocking

Blocking

Wait for next Request

Blocking

Non Blocking

Non Blocking

SSL Support

Java SSL

Java SSL

OpenSSL

SSL Handshake

Blocking

Non blocking

Blocking

Max Connections

maxConnections

maxConnections

你可能感兴趣的:(tomcat)