ZAP과 BurpSuite에서의 "handshake alert: unrecognized_name" 에러 해결하기
최근에 일부 테스트환경(hosts 추가한거라 인증서문제가…)에서 이런 에러를 만났습니다.
handshake alert: unrecognized_name javax.net.ssl.SSLProtocolException: handshake alert: unrecognized_name’
ZAP , Burp 모두 Java Application 이고 동일한 문제가 발생했었는데, 어떤 내용이고 어떻게 해결됬는지 공유드립니닷.
SNI Extension? #
우선 SNI에 대해 알고 시작해야합니다. 간략히 설명드리면 name base의 virtual hosting을 안전하게 쓰기 위한 TLS의 확장 프로토콜? 정도로 이를 이용하면 인증정보를 여러 도메인에 공유해서 사용할 수 있습니다.
<virtualhost *:443>
ServerName example.com
SSLEnable SNI
SSLServerCert default
SSLSNIMap a.example.com sni1-rsa
SSLSNIMap a.example.com sni1-ecc
SSLSNIMap b.example.com sni2
</virtualhost>
관련 내용은 RFC3546에 관련 있으니 확인해보시고, 보안적인 문제는 워낙 여러곳에서 다루고 있으니 생략하겠습니다.
Solution #
unrecognized_name 에러가 SNI 설정으로 일어나는 에러인데, SNI Extension 해제로 해결 가능합니다. 저 환경이 불편할 수 있는데 테스트 이후에 다시 원복하시는게 좋을 것 같습니다
ZAP #
Options => JVM
에서 아래 구문 추가로 해결할 수 있습니다.
-Djsse.enableSNIExtension=false
아니면… run script에 직접 넣어줘도 됩니다.
zap.sh
exec java ${JMEM} ${JAVAGC} -Xdock:icon="../Resources/ZAP.icns" -Djsse.enableSNIExtension=false -jar "${BASEDIR}/zap-2.7.0.jar" "${ARGS[@]}"
보통은 설정에서 제어해주는게 편할겁니다. 다만 설정에서 잘못된 값이 들어가고 ZAP 실행 시 바로 죽어버릴 수 있는데 이때는 command line에서 zap 실행 후 옵션에서 다시 설정해주시면 됩니다. (Options > JVM이 환경 변수로 전달되서 들어가던가…했을거에요)
Burp suite #
User options => SSL => Disable Java SNI