AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1025706
Accepted
hbquikcomjamesl
hbquikcomjamesl
Asked: 2020-07-18 15:41:10 +0800 CST2020-07-18 15:41:10 +0800 CST 2020-07-18 15:41:10 +0800 CST

这是一个带有 TLS 协议的 Tomcat 谜题(我已经在 Tomcat 用户列表服务器上找到了它)

  • 772

我有一个在 Amazon Linux EC2 Linux 实例上运行的 Tomcat 8.5 服务器。Tomcat 在端口 8443 上运行,IPTables 将 443 重新映射到它。

我已更改连接器的“sslProtocol”子句以指定 TLS 1.2 协议。并且更改不起作用:它仍然接受 TLS 1.0 和 1.1 以及 1.2。有人知道问题可能是什么吗?

连接器如下所示(敏感信息已编辑):

<Connector port="8443" proxyPort="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
 compression="on" compressionMinSize="2048" noCompressionUserAgents="gozilla, traviata" compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,text/json,application/x-javascript,application/javascript,application/json"
               maxThreads="1000" socket.appReadBufSize="1024" socket.appWriteBufSize="1024" bufferSize="1024" SSLEnabled="true" scheme="https" secure="true"
               keystoreFile="/etc/tomcat8/dev.REDACTED.net.ks" keyAlias="REDACTED" ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,               TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDH_RSA_WITH_AES_128_CBC_SHA,        TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDH_RSA_WITH_AES_256_CBC_SHA,TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384,
               TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA"
               clientAuth="false" sslProtocol="TLSv1.2" />

(以前,“sslProtocol”子句是 'sslProtocol="TLS"')

相同的“sslProtocol”子句在客户的 AS/400 上运行的 Tomcat 7 服务器的连接器标记中工作得很好,将其限制为 TLS 1.2。

ssl tomcat8 connector
  • 2 2 个回答
  • 1036 Views

2 个回答

  • Voted
  1. dave_thompson_085
    2020-07-18T18:45:55+08:002020-07-18T18:45:55+08:00

    来自Connector 的文档(格式简化,因为在 Stack 上做 HTML 太难了)

    sslProtocol 这是 SSLHostConfig 元素的 sslProtocol 属性的别名,其 hostName 为default。如果未明确定义此 SSLHostConfig 元素,则会创建它。

    对于 SSLHostConfig(同上)

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

    换句话说,这是传递给 的值SSLContext.getInstance()。由于您不识别您的 Java,因此我将使用当前 Oracle LTS 版本 11 的上下文名称(已添加重点):

    TLSv1.2 支持 RFC 5246:TLS 版本 1.2;可能支持其他 SSL/TLS 版本

    SunJSSE 提供程序中该上下文的实现启用了 TLSv1(意味着 1.0)、TLSv1.1 和 TLSv1.2——换句话说,它意味着“最大1.2”。在旧版本的 Java 中,它还启用了 SSLv3,但在几年前 POODLE 攻击之后,它被认为不安全而被删除。(我喜欢说“POODLE 攻击”,听起来很傻。:-)

    选择性地控制已启用协议列表的属性protocols在 SSLHostConfig 中——在上面的引用中(简要地)提到——或者sslEnabledProtocols在 Connector 中等效但拼写不同。在旧版本中(在 8.5“合并”配置之前),它仅在使用 OpenSSL/APR 时SSLProtocol位于连接器中。

    相同的“sslProtocol”子句在客户的 AS/400 上运行的 Tomcat 7 服务器的连接器标记中工作得很好,将其限制为 TLS 1.2。

    AS/400 几乎肯定使用的是IBM Java,而不是 Sun-now-Oracle-now-OpenJDK。IBM 早在很久以前就从 Sun 获得了源代码许可,并保证与 Sun 定义的 Java 规范兼容——该规范明确排除了加密提供者,现在仍然如此。IBM 有自己的加密提供程序,它们与 Sun/Oracle/Open 的不同(尽管在功能上非常相似),因此要了解它对特定 SSLContext 的作用,您需要在(或某些)IBM 网站上找到 IBM 文档,其中我总是觉得无法导航。它可以将 TLSv1.2 实现为“最低1.2”。

    PS:您的密钥库中是否真的同时拥有 RSA和ECC 证书?如果不是,那么您用于密码的巨大价值中的大部分都是无用的,浪费的混乱。另外,任何地方都没有理智的客户想要使用静态 ECDH(或静态 DH)密码套件。您了解 TLS 术语中 ECDH 和 ECDHE 之间非常重要的区别吗?

    • 2
  2. Best Answer
    hbquikcomjamesl
    2020-07-21T07:48:10+08:002020-07-21T07:48:10+08:00

    正确的答案是在周末从 Tomcat 用户列表中直接从两个开发人员那里得到的:

    sslEnabledProtocols="TLSv1.2"

    • 0

相关问题

  • 如何使用 Tomcat 5.5 更新 SSL 证书

  • 为 IIS6 自行生成 SSL 证书?

  • plesk 上的域和子域 ssl 访问

  • 如何设置 SSL 邮件服务器?

  • 如何通过 SVN 命令行接受 SSL 证书?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve