ZAP Java 버전 바꿔치기(Change Java version for fixed ssl error on ZAP)

ZAP Java 버전 바꿔치기(Change Java version for fixed ssl error on ZAP)

in

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

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

./zap.sh