ZAP Java 버전 바꿔치기

Change Java version for fixed ssl error on ZAP

ZAP HUD 테스트한다고 alpha 버전 올렸었는데, macOS 에선 인앱 브라우저로 특정 사이트 접근 시 SSL 관련 에러가 발생해서 삽질했던거 정리해둡니다. Linux는 별 문제 없던 걸로 보아 macOS와 연관된 문제인 것 같습니다.

SSLHandshakeException: Received fatal alert: handshake_failure

보통 구글링 해보면 아래 링크 글 확인해서 대응하라고 하는데, ZAP 쪽 설정 + JCE 관련 내용입니다.

뭔제게 발생한 문제가 Java 문제인 것 같아 JCE 추가를 진행했지만 해결되지 않아 좀 의아했습니다. 그러던 중 원래 쓰던 ZAP은 잘 됬던걸로 생각이 나서 자바 버전 체크를 좀 해봤습니다. (ZAP은 자체적으로 Java 바이너리를 내장하고 있습니다)

release
Found Java version 1.8.0_152
Available memory: 16384 MB
Setting jvm heap size: -Xmx4096m
0 [main] INFO org.zaproxy.zap.Gui

alpha
Found Java version 1.8.0_111
Available memory: 16384 MB
Setting jvm heap size: -Xmx4096m
0 [main] INFO org.zaproxy.zap.Gui

하위 버전의 미묘한 차이가 있었지만, 분명 이 차이가 문제의 부분이라 생각하고 자바를 release 쪽(1.8.0.152)로 바꿔치기 했습니다. zap은 zap.sh => zap.jar 파일 순서로 호출되며 zap.sh에 Java 관련 Path, Binary 설정등이 존재합니다. 열어서 Path 부분이랑 최종 실행되는 Java를 바꿔줍니다.

zap.sh

# Java path 위치 바꿔줌
if [ "$OS" = "Darwin" ]; then
  if [ -e "/Applications/OWASP ZAP.app/Contents/PlugIns/jre1.8.0_152.jre/Contents/Home/bin/java" ]; then
    pushd "/Applications/OWASP ZAP.app/Contents/PlugIns/jre1.8.0_152.jre/Contents/Home/bin" > /dev/null
    echo 'hawul'
    JAVA_PATH="/Applications/OWASP ZAP.app/Contents/PlugIns/jre1.8.0_152/Contents/Home/bin/java"
    PATH="$JAVA_PATH:$PATH"
    popd > /dev/null
  fi
fi

# Java binary 직접 지정 (java1.8.0_111 => java1.8.0_152)
if [ "$OS" = "Darwin" ]; then
  exec "/Applications/OWASP ZAP.app/Contents/PlugIns/jre1.8.0_152.jre/Contents/Home/bin/java" ${JMEM} ${JAVAGC} -Xdock:icon="../Resources/ZAP.icns" -jar "${BASEDIR}/zap-D-2018-    12-17.jar" "${ARGS[@]}"
else
  exec "/Applications/OWASP ZAP.app/Contents/PlugIns/jre1.8.0_152.jre/Contents/Home/bin/java" ${JMEM} ${JAVAGC} ${JAVADEBUG} -jar "${BASEDIR}/zap-D-2018-12-17.jar" "${ARGS[@]}"
fi

이후 실행해보면 에러없이 사이트가 잘 로드됩니다 :D

./zap.sh