Front/WebServer

[Tomcat] handleSubClassException Failed to start component [Connector[AJP/1.3-8009]] 오류 해결

헹창 2020. 10. 26.
반응형

[Tomcat] handleSubClassException Failed to start component [Connector[AJP/1.3-8021]] 오류 해결 

 

 

 

AJP 포트를 연결하여 프로젝트를 배포하는 중에 톰캣을 구동하면 다음과 같은 에러 로그가 발생한다.

 


 

26-Oct-2020 10:16:31.110 SEVERE [main] org.apache.catalina.util.LifecycleBase.handleSubClassException Failed to start component [Connector[AJP/1.3-9021]]

        org.apache.catalina.LifecycleException: Protocol handler start failed

              at org.apache.catalina.connector.Connector.startInternal(Connector.java:1067)

                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)

                at org.apache.catalina.core.StandardService.startInternal(StandardService.java:438)

                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)

                at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:930)

                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)

                at org.apache.catalina.startup.Catalina.start(Catalina.java:772)

                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

                at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

                at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

                at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:342)

                at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:473)

        Caused by: java.lang.IllegalArgumentException: The AJP Connector is configured with secretRequired="true" but the secret attribute is either null or "". This combination is not valid.

                at org.apache.coyote.ajp.AbstractAjpProtocol.start(AbstractAjpProtocol.java:270)

        at org.apache.catalina.connector.Connector.startInternal(Connector.java:1064) ... 12 more

 


 

 

이는 AJP 포트를 설정할 시에 tomcat [conf] 경로에 있는 server.xml 파일에서 설정을 하는데,

 

secretRequired 속성이 기본적으로 true로 작동하여 발생하는 문제로 secret 속성값을 설정하지 않으면서(기본값 null) secretRequired가 true 로 커넥터 설정이 되어버리면

 

유효하지 않은 설정으로 간주하여 에러가 발생한다.

 

 

 

톰캣 8.5 버전과 9.0 버전은 AJP 설정부분에 secretRequired = "false" 속성을 사용하여야한다.

 

 

 


 

해결 방법

 

 

server.xml 파일을 열어보면 아래와 같은 태그가 있다. (포트 번호는 운영 환경에 따라 다를 수 있다.)

 

 

<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>

 

 

이를 다음과 같이 변경해야한다.

 

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

 

 

혹은

 

 

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

 

 

- address : 사용 주소를 넣어준다. ":::1" 혹은 "0:0:0:0" 을 넣어도된다.

 

- secretRequired : 비밀 값(인증키)가 필요한 지에 대한 설정이다. false를 넣어준다.

 

 

 

 

 

참고 사이트 : eastpost95.blogspot.com/2020/03/apache-tomcat-ajp-cve-2020-1938-apache.html

728x90
반응형

댓글

추천 글