Server/WAS
[Tomcat] failed to start connector connector ajp/1.3-8009 protocol handler start failed 오류 조치
호형
2021. 10. 6. 11:24
Apache와 Tomcat을 AJP를 통해 정상적으로 연동시켰음에도 다음과 같이 오류가 발생한다.
[main] org.apache.catalina.util.LifecycleBase.handleSubClassException 구성요소 [Connector[AJP/1.3-8009]]을(를) 시작하지 못했습니다.
org.apache.catalina.LifecycleException: 프로토콜 핸들러 시작 실패
at org.apache.catalina.connector.Connector.startInternal(Connector.java:1038)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:438)
...
원인 : 2020년 Tomcat Ghostcat 취약점에 대한 패치로 AJP Connector 속성의 secretRequired 설정이 필요해졌다.
이 secretRequired 는 별도로 설정하지 않으면 기본값이 true로 설정이 된다.
하지만 secretRequired 이 true인데 Apache와 Tomcat 상호간에 secret key가 없어서 발생하는 문제이다.
해결책
1. AJP Connector 속성의 secretRequired 설정을 false로 변경해준다. (default : true)
Tomcat server.xml
<Connector protocol="AJP/1.3"
address="::1"
port="8009"
redirectPort="8443"
secretRequired="false" />
2. Apache, Tomcat에 각각 secret key 추가
Tomcat server.xml
<Connector protocol="AJP/1.3"
address="0.0.0.0"
port="8009"
redirectPort="8443"
secret="oingdaddy" />
Apache workers.properties
worker.example.host=192.168.0.1
worker.example.port=8009
worker.example.secret="oingdaddy"
변경을 하고 재기동을 하면 적용이 되어 있고 오류는 나지 않을 것이다.
끝!