본문 바로가기

Tomcat AJP Connector가 secret 없이 안 뜨는 이유

조회 2 · 댓글 0
appsrootappsroot작성자2026년 9월 16일

Apache HTTP나 Nginx를 mod_jk/mod_proxy_ajp로 붙이려고 AJP Connector를 열었는데 기동 로그에 secretRequired="true" but the secret attribute is either null or ""가 찍히며 커넥터가 안 뜨는 경우가 있습니다. Ghostcat(CVE-2020-1938) 대응 이후 기본값이 바뀐 탓입니다. 공식 설정 레퍼런스(Tomcat 9.0) 기준으로 정리해 봅니다.

AJP Connector의 secretRequired 기본값은 true이고 secret 기본값은 null입니다. secretRequired가 true면 secret에 null이 아닌 길이 1 이상 값이 있어야만 커넥터가 기동합니다. 즉 secret을 지정하거나, secretRequired를 명시적으로 false로 내려야 합니다. 여기에 더해 address 기본값도 loopback으로 바뀌어, 기본 상태에서는 로컬에서만 접속됩니다.

<!-- 워커에 공유 secret 지정 (권장) -->
<Connector protocol="AJP/1.3"
           address="127.0.0.1"
           port="8009"
           secret="CHANGE_ME_SECRET"
           redirectPort="8443" />

<!-- 신뢰된 망에서만: 검사 자체를 끔 -->
<Connector protocol="AJP/1.3" address="127.0.0.1"
           port="8009" secretRequired="false"
           redirectPort="8443" />

secret에 값을 넣으면 secretRequired 설정과 무관하게 워커도 같은 값을 제시해야 요청이 통과합니다. mod_jk는 workers.properties의 worker.name.secret, mod_proxy_ajp는 secret= 파라미터로 맞춰 주면 됩니다. secretRequired=false는 외부에 노출된 망에서는 쓰지 않는 게 안전합니다.

🔗 https://tomcat.apache.org/tomcat-9.0-doc/config/ajp.html

로그인 후 답글을 남길 수 있습니다.