대부분의 사이트들을 이용할때 우리들은 무의식적으로 Https
프로토콜을 사용하고 있습니다.
이 Https
프로토콜은 Http
에 SSL
이라는 보안 계층이 추가된 것입니다.
위 사진처럼 웹 브라우저의 주소표시줄에 있는 자물쇠 버튼을 선택하면,
보안 연결(Https
)가 사용되었다는 문구와 함께 인증서
를 확인할 수 있습니다.
인증서
를 보면 발급 대상과 발급자가 있습니다.
발급 대상은 이 SSL 인증서
를 사용할 서버입니다.
발급자는 CA
라고 부르며 Certificate Authority
즉 인증기관의 약자입니다.
서버는 자신이 사용할 인증서
가 신뢰할 수 있는 인증서
라는 것을 증명하기 위해 CA
라는 인증기관
에 비용을 지불하고 자신을 보증할 인증서
를 구매 합니다.
그리고 이렇게 CA에게 구매한 인증서를 서버의 특정 경로에 저장하여 외부에서 접근시 자신이 신뢰할 수 있는 서버라는 것을 증명합니다.
서버가 신뢰할 수 있는 기관인 CA
를 통해 인증을 요청하는 것은 이해가 되었습니다.
위의 사진에서는 velog.io의 인증서
를 CA
인 Amazon이 발급해 주었습니다.
그렇다면 이 CA
가 신뢰할 수 있는 인증 기관
이라는 것은 어떻게 증명할 수 있을까요?
이걸 이해하기 위해서는 Root CA
라는 개념을 이해해야 합니다.
일반적으로 인증서
의 구조는 Root
, Intermediate(중간 인증서)
, Leaf(서버 인증서)
3단계로 구성되어 있으며 이를 인증서 체인(Certificate chain)
이라고 부릅니다.
실제 사용자가 비용을 지불하고 구입하는 인증서
는 서버 인증서
인 Leaf
이지만, Leaf 인증서
하나만으로 인증을 하는 형태가 아닌 인증서 체인
상단에 존재하는 인증서
들을 참고해 인증하는 방식입니다.
이 서버 인증서
를 신뢰하기 위해서는 해당 인증서
의 인증서 체인
을 통해 신뢰할 수 있는 Root 인증서
를 찾아낼 수 있어야 합니다.
그렇다면 Root CA
는 무엇일까요?
서버의 인증서
는 CA
가 인증해주지만, CA
의 인증서
역시 누군가 보장해주어야 합니다.
CA
는 자기 스스로가 자신의 인증서
에 서명을 하는데 이를 Root CA
라고 하며, 인증서
중 가장 큰 권한을 가지고 있습니다.
먼저 tistory의 인증서
입니다. 인증 경로 탭을 통해 tistory의 인증서 체인
정보를 볼 수 있고,
위의 중간 인증서
와 Root 인증서
를 확인할 수 있습니다.
다음은 Velog의 인증서
입니다.
역시 인증서
의 체인을 확인할 수 있는데 Amazon이라는 중간 인증서
와 Amazon의 Root CA
를 확인할 수 있고, 그보다 상위 기관의 인증서
역시 확인할 수 있습니다.
이해를 돕기 위해 직접 실습을 진행해 보겠습니다.
실습의 절차는 다음과 같습니다.
AWS
EC2
를 이용해 VM 생성- 해당 서버를
Root CA
로 만들기 위해Root 인증서
생성- 웹 서비스가 사용할
SSL 인증서
를 생성- 해당
인증서
를Root 인증서
를 통해 서명