ssl_error_rx_record_too_long - 相同 IP 的客户端和服务器 SSL 证书

Posted

技术标签:

【中文标题】ssl_error_rx_record_too_long - 相同 IP 的客户端和服务器 SSL 证书【英文标题】:ssl_error_rx_record_too_long - client and server SSL certs for the same IP 【发布时间】:2013-09-08 13:38:01 【问题描述】:

我正在服务 A 和服务 B 之间实现相互 SSL。服务 A 使用 1-way 和 2-way SSL。 1 路用于用户与网站 A 之间的通信,2 路 SSL 以安全的方式将该用户的请求转发到服务 B。

服务 A 中的单向 SSL 在 Tomcat server.xml 中指定。 2-way SSL 是在客户端(服务 A)和 Tomcat 配置(服务 B)上使用 JSEE 安全套接字通信实现的。自动取款机。当我尝试访问服务 A 时,我收到 ssl_error_rx_record_too_long 错误。

根据这个答案ssl_error_rx_record_too_long and Apache SSL,原因之一可能是我为同一个 IP 使用了多个 SSL 证书。这真的是您不能为多个证书使用相同的 IP 的情况吗?即使一个证书是服务器证书(用于 1-way SSL)而另一个是客户端证书(用于 2-way SSL)?

这可能不是我的问题的原因,但我只是想确定实际上是否有可能为同一个 FQDN 提供多个证书。感谢您的帮助!

【问题讨论】:

【参考方案1】:

ssl_error_rx_record_too_long 通常与证书配置无关,但该端口上的内容实际上并未使用 SSL/TLS。

question you linked to 中的答案(甚至是问题的更新)也指向了这个问题(例如缺少SSLEngine on)。您可能在连接器配置中忘记了 SSLEnabled="true" 之类的内容。

正如我在 an answer to your other question 中所说,能够在同一个 IP 地址上配置两个服务器证书对您而言并不是问题。

实际上可以为同一个 FQDN 拥有多个证书

可以使用服务器名称指示 TLS 扩展在同一 IP 地址和端口上配置多个证书,但服务器和客户端都需要支持它。特别是,服务器端的 Java 7 中的 JSSE 不支持此功能(仅在客户端),但如果您愿意在 Java 服务器前放置反向代理,则有一些解决方法。

这对于相同 FQDN 是不可能的,因为它允许选择证书。话虽如此,在同一个 IP 地址上为同一个 FQDN 拥有多个服务器证书通常是没有意义的。当您需要支持不同的名称时,支持多个证书非常有用。

【讨论】:

以上是关于ssl_error_rx_record_too_long - 相同 IP 的客户端和服务器 SSL 证书的主要内容,如果未能解决你的问题,请参考以下文章