AJP 连接器配置为 secretRequired="true" 但升级到 2.2.5 后 secret 属性为 null 或 ""

新手上路,请多包涵

原因:java.lang.IllegalArgumentException:AJP 连接器配置为 secretRequired=“true”,但 secret 属性为 null 或“”。此组合无效。在 org.apache.coyote.ajp.AbstractAjpProtocol.start(AbstractAjpProtocol.java:264) 在 org.apache.catalina.connector.Connector.startInternal(Connector.java:1035) … 省略了 22 个常用帧

将 springboot 从 2.1.9 升级到 2.2.5 后,我看到了上述错误。升级是通过将 tomcat 版本升级到与最新的 springboot 2.2.5 捆绑在一起的 9.0.31 来克服 Ghostcat 漏洞所必需的。

原文由 Manjunath 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

这是一种解决方案,虽然可能不是最好的,但我的重点不是这个,只是为了解决错误,我在 Spring Boot 2.2.5.RELEASE 版本上启用了 AJP。添加这个:

 ((AbstractAjpProtocol) ajpConnector.getProtocolHandler()).setSecretRequired(false);

我的 AJP 配置全课:

 package com.ssldemo.config;

import org.apache.catalina.connector.Connector;
import org.apache.coyote.ajp.AbstractAjpProtocol;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class TomcatConfiguration {

    @Value("${tomcat.ajp.port}")
    int ajpPort;

    @Value("${tomcat.ajp.remoteauthentication}")
    String remoteAuthentication;

    @Value("${tomcat.ajp.enabled}")
    boolean tomcatAjpEnabled;

    @Bean
    public TomcatServletWebServerFactory servletContainer() {

        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
        if (tomcatAjpEnabled) {
            Connector ajpConnector = new Connector("AJP/1.3");
            ajpConnector.setPort(ajpPort);
            ajpConnector.setSecure(false);
            ajpConnector.setAllowTrace(false);
            ajpConnector.setScheme("http");
            ((AbstractAjpProtocol) ajpConnector.getProtocolHandler()).setSecretRequired(false);
            tomcat.addAdditionalTomcatConnectors(ajpConnector);
        }

        return tomcat;
    }

}

应用程序属性

server.port=8082
tomcat.ajp.port=9090
tomcat.ajp.remoteauthentication=false
tomcat.ajp.enabled=true

原文由 TechFree 发布,翻译遵循 CC BY-SA 4.0 许可协议

在 tomcat 中导航到 server.xml

AJP 替换为:

 <Connector protocol="AJP/1.3" address="::1" port="8009"
           redirectPort="8443" secretRequired="false" />

但请确保您了解它的安全含义(请参阅 Krzysztof Skrzynecki 对此的回答)。

原文由 Jainender Chauhan 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
logo
Stack Overflow 翻译
子站问答
访问
宣传栏