这与SSL / TLS重新协商问题有关。我们将Tomcat 7.0.47用作应用程序的Web服务器。
我尝试了多种方式来禁用重新协商,但未能成功。
我们在Server.xml文件中启用了SSL,如下所示:

   

<Connector SSLEnabled="true"
           clientAuth="false"
           compressableMimeType="text/html,text/plain,text/xml,text/css,text/javascript,image/png,image/gif,image/jpeg,application/json"
           compression="on"
           compressionMinSize="2048"
           connectionTimeout="15000"
           debug="0"
           disableUploadTimeout="true"
           enableLookups="false"
           keyAlias="SomeAlias"
           keystoreFile="C:\.keystore"
           keystorePass="SomePassword"
           maxHttpHeaderSize="20480"
           maxSpareThreads="100"
           maxThreads="400"
           minSpareThreads="25"
           port="8443"
           protocol="HTTP/1.1"
           allowUnsafeLegacyRenegotiation=false
           scheme="https"
           secure="true"
           sslProtocol="TLS"
           tomcatAuthentication="false"/>


在这里,我尝试设置选项allowUnsafeLegacyRenegotiation = false,但是服务器无法使用此设置启动。

最佳答案

不幸的是,Oracle当前的JSSE实现无法为您的问题提供任何解决方案。但是您可以按照JSSE Reference Guide table 7中的说明运行旧的Java(Java 6更新19/20/21),因为这些称为“阶段1修复”的版本可以完全消除重新协商支持。

考虑到旧的Java版本还有其他问题,您可能不想运行它们,因此最安全的做法是仅允许最新的重新协商(RFC 5746)。为此,如JSSE Reference Guide table 9中所述,将这两个系统属性设置为false:allowLegacyHelloMessages,allowUnsafeRenegotiation。
并删除不再有用的allowUnsafeLegacyRenegotiation连接器属性。

现在是解决问题的时候了,但是我正在做一些非常棘手的测试,需要花费大量时间。欢迎赏金。

10-07 13:52