단순히 https 는 http 보다 보안이 좋다는 정도만 알고 있었는데, 이번에 API를 쓰면서 SSL 관련 Exception을 마주쳐서 https를 호출할 때 인증서 등록이 필요하단 것을 알게 되었다.
HTTP와 HTTPS
먼저 HTTP란,
클라이언트 - 서버 간 통신을 위해 사용하는 Application 계층 프로토콜이다.
초기버전인 HTTP/1.1, 효율성 및 속도를 개선한 HTTP/2~3이 있다.
GET으로 데이터를 받고, POST/PUT 으로 데이터를 줄 수도 있는데 HTTP는 데이터를 암호화없이 원문 그대로 전송하게 된다.
그러면 중간에 가로채면 데이터를 볼 수 있기 때문에 이러한 보안 문제를 해결한 것이 HTTPS다.
HTTPS는 통신에 SSL 및 TLS 기술을 결합했다.
HTTPS 웹사이트를 사용하기 위해선 인증기관(CA)에서 SSL/TLS 인증서를 얻어야 한다. 그리고 통신 전에 웹브라우저와 인증서를 공유하여 신뢰를 얻는다.
HTTPS는 암호화 된 데이터로 통신하는데, 인증서에는 암호화에 대한 정보도 저장되어 데이터를 해독할 수 있다.
HTTPS 프로세스
1. https://로 사이트 접속
2. 브라우저가 서버에게 SSL 인증서를 요청하여 신뢰성 검증
3. 서버는 퍼블릭 키를 포함한 SSL 인증서를 전송
4. 브라우저는 퍼블릭 키로 비밀세션키가 포함된 데이터를 암호화하여 전송
5. 서버는 개인키로 메시지를 해독하여 비밀세션키를 암호화하여 브라우저에 승인메시지를 전송
6. 브라우저와 서버는 비밀세션키를 통해 통신
HTTPS 인증서 등록
만약, 프로젝트에서 https 사이트의 값을 가져올 때, 사용하는 jre/jdk에 SSL 인증서를 추가해야 한다.

접속하고자 하는 사이트의 url의 자물쇠 버튼을 눌러 이 연결은 안전합니다를 누르고,

인증서가 유효함 클릭

내보내기를 누르면 인증서가 저장된다.
그 다음, powershell을 관리자 권한으로 실행한 후,
keytool -import -keystore "{jre경로}\lib\security\cacerts" -file "인증서 저장경로" -alias "인증서 별칭(원하는 이름)
을 입력하고, y를 입력하면 인증서가 jre keystore에 등록된다.
<참고 사이트>
https://aws.amazon.com/ko/compare/the-difference-between-https-and-http/
HTTP와 HTTPS 비교 - 전송 프로토콜 간의 차이점 - AWS
1996~1997년에 출시된 최초의 HTTP 버전이 HTTP/1.1입니다. HTTP/2와 HTTP/3은 프로토콜 자체를 업그레이드한 버전입니다. 데이터 전송 시스템을 수정하면서 효율성을 개선했습니다. 예를 들어, HTTP/2는 텍
aws.amazon.com
'공부 > IT' 카테고리의 다른 글
| 나의 백엔드 공부 계획 (0) | 2024.02.25 |
|---|---|
| 프론트엔드, 백엔드 개발자 차이 (어떤 개발자가 나에게 맞을까?) (0) | 2024.02.21 |
| IT 콘퍼런스 "INFCON 2023" 정보 및 시간표 공유 이벤트 (0) | 2023.07.27 |
| [Git] Revert와 Reset 차이 (0) | 2023.07.25 |