[cubeTalk] javax.net.ssl.SSLException: Received fatal alert: internal_error

binda·2024년 8월 28일

프로젝트 정리

목록 보기
3/9

😮 ??

docker-compose로 실행된 MongoDB 컨테이너와 로컬 MongoDB Atlas 클러스터를 연결하고, spring application을 실행하니

javax.net.ssl.SSLException: Received fatal alert: internal_error

위와 같은 error가 발생했다.

찾아보니
internal_error가 발생한 이유는 MongoDB Atlas에 IP 주소를 허용하지 않아서 발생하는 문제로,
MongoDB Atlas의 네트워크 접근 설정에서 해당 Docker 컨테이너의 IP 주소가 허용 목록에 추가되어 있어야 연결이 원활하게 이루어질 수 있다고 한다.

👉 해결방법

MongoDB Atlas에 접속 후 해당 프로젝트를 누르고 좌측 메뉴에서 Network Access를 클릭 후 해당 IP 주소를 추가하면 끝!

curl -4 ifconfig.me

명령어를 통해 로컬 공인 IP 주소를 확인했다.

현재 로컬에서 실행된 Docker Compose의 로컬 공인 IP 주소를 입력했으나, 후에 배포환경에서 Docker Compose를 실행하려면 추후에 배포 서버의 공인 IP주소를 추가하면 된다!

🤔 근데 왜 SSLException error인가?

MongoDB Atlas는 기본적으로 SSL/TLS를 통해 클라이언트와의 통신한다고 한다.

근데, 어떻게 Docker Compose나 Spring 애플리케이션이 SSL 인증서를 직접 사용하지 않았는데, MongoDB Atlas와 통신할 수 있는 이유가 뭘까 궁금해졌다..

  1. MongoDB 드라이버의 기본 SSL 지원
    MongoDB 클라이언트 라이브러리(예: Java용 MongoDB 드라이버)는 기본적으로 SSL/TLS를 지원한다고 한다.
    즉, 애플리케이션 코드에서 특별히 SSL 인증서를 설정하지 않더라도, MongoDB 드라이버는 Atlas와의 통신을 자동으로 SSL을 통해 처리한다고 한다.

MongoDB URI의 기본 설정:
mongodb+srv:// 프로토콜을 사용하는 경우, 드라이버는 기본적으로 SSL을 사용하도록 설정된다.
예를 들어, 다음과 같이 yml파일에 URI를 작성할 때:

SPRING_DATA_MONGODB_URI: mongodb+srv://username:password@cluster0.mongodb.net/myDatabase

드라이버는 자동으로 SSL을 사용하여 Atlas와 통신한다고 한다.

참고 : mongoDB 공식문서

아하!

profile
🍤

0개의 댓글