검색된 결과가 없습니다.
Assets
인사이트
AWS IoT Core를 사용하여 프로젝트를 진행할 시 SDK를 사용하여 백엔드를 개발하는 경우가 있습니다.
이번 포스트는 Backend에서 IoT Core를 사용하는 어플리케이션을 개발할 시에 겪은 ‘신뢰하지 않는 인증서 오류’를 해결한 케이스에 대해 다뤄보려고 합니다.

개발 환경은 Spring boot로 개발된 Backend Pod가 EKS on EC2로 기동 중이었으며, Backend에서 IoT Core를 통해 IoT Device에 Rule을 내리는 기능이 개발 중이었습니다.
이때 다음과 같은 에러가 발생합니다.

위의 에러는 Backend에서 IoT Core로 API 통신을 위해 Endpoint로 연결을 시도 중, SSL: CERTIFAICATE VERIFY FAILED 가 발생한 것입니다.
해당 엔드포인드에 접근해 보니 다음 그림과 같이 신뢰하지 않는 인증서였습니다.
• 엔드포인트 접속 시, 웹 브라우저 화면

• 인증서 정보

확인해 보니 구글 크롬, 사파리 등에서 더 이상 Symantec에서 발급한 인증서를 신뢰하지 않고 있었습니다.
(관련링크1 : https://kicassl.com/cstmrsuprt/ntc/searchNtcDetail.sg?ntcSeq=156, 관련링크2 : https://security.googleblog.com/2017/09/chromes-plan-to-distrust-symantec.html)
이에 해당 인증서를 별도로 받아 keystore를 통해 신뢰하는 인증서에 추가해 보았으나,여전히 인증서 오류가 발생하였습니다.

여러 테스트 및 웹 서핑을 통해 원인을 찾아낼 수 있었습니다.
keystore로 인증서를 추가하더라도 2019년 4월 JDK(버전 12, 11, 8 및 7) 패치 이후로 Symantec 인증서를 신뢰하지 않도록 변경 되었던 것이었습니다. (관련링크 : https://blogs.oracle.com/java/post/oracles-plan-for-distrusting-symantec-tls-certificates-in-the-jdk)
이를 Hedge 할 방법으론, java.secure 파일에서 ‘jdk.security.caDistrustPolicies=SYMANTEC_TLS’ 옵션을 제거(주석) 하는 것입니다.

하지만 위의 방법은 굳이 보안에 문제가 있어서 막은 것을 풀고 쓴다는 것이 찝찝했습니다.
그리곤 AWS는 Symantec 인증서 비신뢰 이슈가 발생하고 있는데 아무 조치도 하지 않고 있었을까? 하는 의문이 들었고, 역시 다른 경로(엔드포인트)가 존재했습니다.
AWS IoT Core의 서비스 엔드포인트는 원래 https://{account-specific-prefix}.iot.{region}.amazonaws.com 으로 Symantec 인증서를 사용하였으나,
위와 같이 많은 기업에서 신뢰하지 않게 되면서 새로운 서비스 엔드포인트 https://{account-specific-prefix}-ats.iot.{region}.amazonaws.com 을 생성하였고 이쪽을 사용하도록 권고하고 있었습니다.
하지만 AWS CLI 명령어와 SDK의 Default는 여전히 Symantec 인증서가 사용되는 엔드포인트여서 발생한 문제였습니다.
이에 Backend에서 사용하는 IoT Core 엔드포인트를 ATS로 변경하였고 모든 문제를 해결할 수 있었습니다.
• 애플리케이션 성공 메시지

• AWS CLI 참고

이번 트러블 슈팅을 요약하면 다음과 같습니다.
(1) AWS IoT Core는 원래 Symantec에서 발급된 인증서를 사용하는 서비스 엔드포인트를 사용하고 있었다.
(2) Symantec의 보안 사고로 여러 기업들은 더 이상 Symantec 발급 인증서를 신뢰하지 않기로 하였다.
(3) 이에 AWS는 ATS에서 발급한 인증서를 제공하는 또 다른 서비스 엔드포인트를 사용하도록 권고 중이다.
(4) 기존 디바이스와의 호환성을 유지하기 위해 default 설정을 Symantec 엔드포인트를 사용하도록 유지했으며, 이에 서비스 엔드포인트는 별도의 설정을 통해 연결을 하여야 한다.
a. ATS 엔드포인트 사용
b. 엔드포인트 생성 후, -ats postfix 추가하여 사용
c. java.secure 옵션 변경 (비추천)
AWS IoT Core 개발을 하는 Backend 개발자분들에게 도움이 되길 바라며 포스팅을 마치겠습니다.

서울시 강서구 마곡중앙8로 71 LG 사이언스파크 E13, E14 | 대표전화 02-3777-1114
©LG CNS. All rights reserved.
LG CNS Cookies
We use cookies to provide you with a convenient web browsing
experience and to continuously improve functionality through traffic
analysis.
By clicking
‘Accept all cookies’,
you agree to our use of cookies. Click
‘Reject all cookies’
to decline all non-essential cookies. See
Privacy Policy
for details.
기업명을 두 글자 이상 입력해주세요.
소식을 받아 보시려면 마케팅 정보 활용과 마케팅 정보 수신에 모두 동의해 주셔야 합니다.
제출이 완료되었습니다.
제출이 완료되었습니다.
확인 버튼을 누르시면 자사 홈페이지 홈화면으로 이동됩니다.
요청하신 자료가 이메일로 발송되었습니다.
구독 설정이 저장되었습니다.
잘못된 접근입니다. 정상적인 경로를 통해 다시 시도해 주세요.
검색 중 오류가 발생했습니다. 다시 시도해주세요.
제출에 실패하였습니다.
다시 시도해주세요.
사업자등록번호는 10자리를 입력해주세요.
지원하지 않는 파일 형식입니다.
10MB 이하의 파일만 업로드하실 수 있으며, 최대 10개까지 첨부 가능합니다.
10MB 이하의 파일만 업로드하실 수 있습니다.
파일은 최대 10개까지만 첨부하실 수 있습니다.
업로드 중 오류가 발생했습니다. 다시 시도해 주세요.
파일을 교체하시겠습니까?