Apache Tomcat AJP 커넥터 보안 에러 해결하는 2가지 방법
아파치 톰캣 8.5.79 버전을 설치하고, 기존에 운영 중인 톰캣의 AJP 설정을 추가한 후 발생한 톰캣 예외(LifecycleException) 로그 해결 방법에 대해 알아보겠습니다.
이 현상을 해결하는 방법은 2가지가 있으며, 다음과 같습니다.
- AJP 커넥터 보안 설정 추가하기 AJP 설정에 secret="패스워드", address="서버 IP" 속성을 추가하여 보안 설정을 활성화합니다.
- AJP 커넥터 보안 설정 해제하기 AJP 설정에 secretRequired="false" 속성을 추가해서 보안 설정을 해제합니다.
환경 정보
- 운영 체제 : CentOS 7.9
- 실행 계정 : root
- 톰캣 버전 : 8.5.79
문제 확인
톰캣 8.5.79 버전을 설치하고 기존 톰캣 서버의 AJP 설정 내용을 추가한 후 톰캣 서비스는 정상적으로 시작되었지만, catalina.out
파일에서 AJP 프로토콜 시작 실패 로그가 확인됩니다.
02-Jun-2022 13:47:15.502 SEVERE [main] org.apache.catalina.core.StandardService.startInternal Failed to start connector [Connector[AJP/1.3-8009]] org.apache.catalina.LifecycleException: Protocol handler start failed at org.apache.catalina.connector.Connector.startInternal(Connector.java:1139) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) at org.apache.catalina.core.StandardService.startInternal(StandardService.java:452) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:794) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) at org.apache.catalina.startup.Catalina.start(Catalina.java:695) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:345) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:476) 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:274) at org.apache.catalina.connector.Connector.startInternal(Connector.java:1136) ... 12 more 02-Jun-2022 13:47:15.503 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 430 ms
원인 확인
AJP 커넥터의 secretRequired
속성이 null과 0이 아닌 값으로 구성된 경우에만 AJP 커넥터가 시작됩니다. secretRequired 속성은 기본값이 true로 설정되어 있어서 AJP 커넥터를 시작하기 위한 보안 속성을 지정해야 하는데, 이 보안 설정이 되어 있지 않아서 발생한 예외입니다.
해결 방법 2가지
AJP 커넥터의 보안 속성을 추가하여 요구 사항을 만족시켜서 사용하거나, 보안 속성을 사용하지 않음으로써 문제를 해결할 수 있습니다.
AJP 커넥터 속성 추가하여 보안 설정 사용하기
톰캣의 server.xml
파일에서 secretRequired="true"
항목에 필요한 필수 속성을 AJP Connector 설정에 추가합니다. secret="패스워드"
와 address="서버 IP"
속성을 추가하여 보안 설정을 완료합니다.
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector protocol="AJP/1.3"
secret="패스워드"
address="서버 IP"
address="::1"
port="8009"
redirectPort="8443" />
AJP 커넥터 보안 설정 해제하기
server.xml
파일의 AJP 커넥터의 설정에 secretRequired="false"
속성을 추가하여 보안 설정을 해제합니다.
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector protocol="AJP/1.3"
secretRequired="false"
address="::1"
port="8009"
redirectPort="8443" />
마무리
Apache Tomcat 8.5.79 버전에서 발생한 AJP secretRequired 에러 해결하는 2가지 방법에 대해 알아보았습니다. AJP 커넥터 보안 설정을 추가하거나, 설정을 해제하여 톰캣 예외 로그를 해결할 수 있습니다.
- 블로그 : www.infracody.com
이 글이 유익했나요? 댓글로 소중한 의견을 남겨주시거나 커피 한 잔의 선물은 큰 힘이 됩니다.