티스토리 뷰

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"

 

변경을 하고 재기동을 하면 적용이 되어 있고 오류는 나지 않을 것이다. 

 

끝!

댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30