이슈

일부 서비스에서 페이지 이동이 안되고 Proxy Error(502)가 발생.

과정 및 해결

1차 - 에러 로그로 원인 및 해결 방법 찾기

Apache와 Tomcat 로그 부터 확인. 

Tomcat에서는 별다른 로그를 찾을수 없었고 Apache 로그에서 Timeout 로그를 확인 가능했음.

따라서 처리과정이 길어지면서 Apache나 Tomcat에 Timeout 설정을 초과하면서

발생하는 에러로 추정하고 상용 서버가 아닌 테스트 서버에서도 동일하게 발생하는지 확인.

테스트 서버도 재현이 가능했고 테스트 서버 Timeout 설정을 수정하면서 테스트했으나

Timeout 설정을 길게 늘려줘도 해당 시간만큼 대기하다가 똑같은 proxy Error가 발생.

 

2차 - 범위를 좁혀가며 원인 및 해결 찾기

1차 과정에서 단순 처리 시간이 길어져서 발생하는 것이 아닌 것으로 추정하고

방향을 바꿔 서버 로그를 세세하게 살펴보다가 의심가는 구간에 서버 로그를 더 추가함.

특정 통신 모듈 전까지만 로그가 출력되고 이후에는 로그가 출력되지 않는 것을 확인.

 

3차 - 통신 모듈 테스트

2차에서 통신 모듈에서 무엇인가 문제가 발생하는 것을 인지.

통신 모듈을 주석 처리 하고 테스트. 그러자 통신 모듈 이후 로그가 출력.

통신 모듈을 세세하게 들여다보니 2가지 문제점이 확인됨.

하나는 HTTPS 통신을 하는데 SSL Context 설정이 보이지 않음.

다른 하나는 헤더에 쿠키 세팅을 확인.

쿠키 값을 까보니 자사의 쿠키를 전송. 

원격지 서버를 관리하는 담당자에게 쿠키의 용도를 확인.

원격지는 사용하지 않는다고 답신 받고 쿠키 제거 후 테스트 하니 정상 동작.

원인

POST Method로 쿠키를 다른 도메인간 전송하여 발생하는 문제.

SameSite Cookie 정책에 영향을 받는다.

통신 모듈에서 잘못된 쿠키 사용으로 지연이 되면서 Timeout 시간이 초과되자 Proxy Error 페이지를 노출.

자세한 정책 내용은 아래를 확인하면 된다.

https://web.dev/i18n/ko/samesite-cookies-explained/

 

'장애처리로그' 카테고리의 다른 글

인증서 유효성 에러  (0) 2022.02.13

기억에 남는 인증서 유효성 에러를 정리해보려고 합니다.

오류가 발생했다는 보고를 받고 디버깅을 해보니 해당 에러가 발생합니다.

 

1.  내용

pkix apth building failed ... unable to find valid certfication path to requested target

 

2. 원인

인증서 유효성 에러인데 여러 가지 원인이 있을 수 있어서 다양한 방식으로 접근해봤습니다.

 

2.1 인증서 유효성 확인

사용하는 API 테스트 툴에는 POST MAN 테스트 툴 세팅 옵션에 SSL Certificate verification 있는데

이 옵션을 활성화하면 유효하지 않은 인증서의 경우 통신이 되지 않습니다.

어느 정도까지 체크가 가능하냐면 중개 인증서를 잘못 설정한 경우까지도 잡아내는 것을 확인했습니다.

그런데 해당 옵션으로 체크하고 검증해봐도 문제가 없었습니다.

 

2.2 open ssl 명령어로 확인

테스트 서버 상에서 open ssl 명령어를 통해서 체크를 해봐도 verification code가 정상으로 확인됩니다.

인증서 자체는 유효한 것으로 보이는데 어떤 과정에서 에러가 발생했을지 생각을 해봅니다.

 

2.3 유효한 인증서 목록 확인

브라우저 or 서버 든 유효한 CA 목록을 가지고 있습니다.

SSL Handshake 과정에서 인증서의 CA는 유효한지 체크를 하는데요.

만약 어떤 식으로 업데이트 환경이 아닌 경우 예를 들어서 브라우저는 업데이트되면서

목록이 갱신되겠지만 가끔씩 내부망 환경을 가진 클라이언트 환경에서 업데이트되지 않는 케이스를 확인했습니다.

그러면 서버 to 서버 통신 환경일 경우 당연히 서버상의 유효한 인증서 목록에 없다면 에러가 발생할 수밖에 없습니다.

keytool 유효한 인증서 목록을 확인해보니 해당 서버에서 보내는 인증서의 CA가 목록에 없습니다.

여기서 에러가 발생하게 됩니다.

여담으로 아주 드문 경우이기는 하지만 CA 목록에서 사고를 쳐서 제외되는 경우도 있습니다. 

 

2.4 해결 

2.4.1 인증서 목록에 수동 추가

가장 간단한 방법은 인증서 목록에 인증서를 추가해주면 해결됩니다.

명령어를 잘 모르겠으면 보통은 인증서 업체에 문의하면 대부분 가이드가 있고

어떻게 수동 추가하는지 안내를 해주는 편입니다.

 

2.4.2 통신 모듈을 유효성 체크하지 않게 수정

인증서 유효성 체크를 무시하게 통신 모듈을 수정해줄 수 있지만

당연히 인증서 유효성 체크가 불가능하므로 추천하는 방법은 아닙니다.

 

2.4.3 JDK 업데이트 

JAVA 서비스 환경이라면 JDK 업데이트하면서 목록에 추가될수 있습니다.

다만 앞에서 이야기한 것처럼 원래 CA 목록에 있었는데 빠지는 경우도 있기때문에

업데이트 버전에 따른 CA 목록을 확인해봐야합니다.

 

keytool CLI 환경에서 추가하는 명령어는 아래 링크를 확인해주세요.

https://www.lesstif.com/java/java-keytool-keystore-20775436.html

 

HTTPS 통신 관련해서 상세 설명은 아래 링크를 확인해주세요.

https://opentutorials.org/course/228/4894

'장애처리로그' 카테고리의 다른 글

SameSite Cookie 그리고 Proxy Error  (0) 2022.04.21

+ Recent posts