- Published on
HTTPS
- 글쓴이
HTTPS
HTTPS는 Hypertext Transfer Protocol Secure
의 약자로, HTTP에 Security(보안)를 더한 버전이다.
HTTP는 웹페이지를 가져오기 위한 프로토콜이지만, HTTPS는 SSL/TLS 프로토콜을 사용하여 통신을 암호화함으로써 데이터의 보안을 확보한다.
SSL/TLS 프로토콜이란?
SSL(Secure Sockets Layer)과 TLS(Transport Layer Security)는 네트워크 통신을 안전하게 하는 데 사용되는 암호화 프로토콜
이다.
SSL은 넷스케이프에서 개발되었지만 보안 상 결함이 있었다. TLS는 SSL를 표준화한 형태이다. SSL과 TLS는 현재 모두 TLS 1.3 버전을 사용하고 있다.
다시 정리하자면 SSL과 TLS의 주요 차이점은 버전과 개선된 보안 기능이다. TLS는 기본적으로 SSL의 최신 버전이라고 볼 수 있으며, 보안 강화와 성능 향상을 위해 지속적으로 업데이트되고 있으며, 현재는 TLS가 보안 통신을 위한 권장 표준이다. SSL/TLS라는 용어를 같이 사용하거나 둘 중 하나를 명시해 사용한다.
SSL/TLS 프로토콜은 대칭키 암호화 or 비대칭키 암호화, 인증서를 통해 보안을 확보한다.
SSL 인증서가 필요한 이유는?
SSL 인증서는 웹사이트가 클라이언트와 안전하게 데이터를 주고받을 수 있게 해주는 디지털 서명
이다.
웹사이트가 SSL 인증서를 사용하면, 사용자가 사이트에 전송하는 정보가 암호화된다는 의미이다.
또한 SSL 인증서는 웹사이트의 신뢰성
을 확인하는 역할을 한다. 인증서는 신뢰할 수 있는 CA(Certificate Authority)로부터 발급받으며, 이는 사이트가 진짜임을 확인시켜주는 역할을 한다.
SSL 인증서의 종류
검증 범위에 따라 SSL 인증서의 종류는 다음과 같이 나뉘며, 상황에 따라 사용하면 된다.
-
Domain Validation (DV) SSL 인증서: 최소 수준 신원 확인을 제공한다. CA는 인증서를 발급하기 전에
도메인 소유자
인지 확인하고 인증서를 발급해 매우 빠르게 사용할 수 있다. DV 인증서는 민감한 정보를 다루는 웹 사이트에는 권장되지 않는다. -
Organization Validation (OV) SSL 인증서: OV 인증서는 도메인 소유자뿐만 아니라
조직
도 검증한다. CA는 조직이 실제로 존재하고 법적으로 인증된 조직인지 확인한다. 해당 프로세스는 며칠정도 소요된다. -
Extended Validation (EV) SSL 인증서: EV 인증서는 가장 높은 수준의 신원 확인을 제공한다. CA는 도메인 소유자뿐만 아니라 조직이 사업을 하는 데 필요한 모든
법적 요건
을 충족하는지도 확인한다. 이 과정은 일반적으로 몇 주 정도 걸린다. 회사에 EV 인증서 요청 시 최소 3주전에 신청하라는 가이드라인이 많다. 브라우저 주소 표시 줄에 표시되는 회사 이름을 통해 웹 사이트가 EV 인증서를 사용하고 있음을 알 수 있다. -
Wildcard SSL 인증서: 이 유형의 인증서는 단일 도메인과 그에 연결된 모든 하위 도메인에 대한 보안을 제공한다. 예를 들어,
*.example.com
인증서는www.example.com
,blog.example.com
,store.example.com
등의 도메인을 보호할 수 있다.
EV 인증서 발급 요건
- 법인 회사를 운영한지 3년 이상되는 회사 (3년 미만의 경우, 별도의 서류 제출 필요)
- 영문사업자 등록증이 존재하고, 전화인증이 가능한 회사
- 지정된 도메인에 대해 승인이 가능한 회사
- EV 인증서를 신청한 고객의 신원을 확인할 수 있는 회사
SSL 3-way handshake
-
클라이언트 헬로 (Client Hello): 클라이언트는 서버에게 SSL/TLS 버전, 사용가능한 Cipher suite(암호화 알고리즘), 그리고 랜덤 바이트 형태로 "클라이언트 랜덤"을 보낸다.
-
서버 헬로 (Server Hello): 서버는 클라이언트가 제공한 정보를 기반으로 최적의 SSL/TLS 버전과 암호화 알고리즘을 선택한다. 서버는 선택된 알고리즘과 자신의 랜덤 바이트 시퀀스인 "서버 랜덤"을 클라이언트에게 전송한다.
-
Certificate, (Server Key Exchange), ServerHello Done : 서버는 자신의 SSL 인증서를 클라이언트에게 제공한다. 공개키가 인증서가 없는 경우만 서버가 키를 직접 전달하게 된다(Server Key Exchange).
-
인증서 확인: 클라이언트는 서버의 SSL 인증서를 확인한다. 인증서가 신뢰할 수 있는 CA에 의해 서명되었는지와 인증서 유효성을 검증한다. 인증서에는 공개키가 들어있다.
-
키 교환(Client Key Exchange): 클라이언트는 "클라이언트 랜덤", "서버 랜덤", 그리고 서버의 공개키를 사용하여 "pre-master secret"이라는 임시 세션 키를 생성한다. 이 키는 클라이언트가 자신의 공개키를 사용하여 암호화한 후 서버에게 전송한다. 서버는 자신의 비밀 키를 사용하여 이 키를 복호화하고, 동일한 "premaster secret"를 생성한다.
-
세션 키 생성: 클라이언트와 서버는 이제 "pre-master secret"와 "클라이언트 랜덤" 및 "서버 랜덤"을 사용하여 동일한 세션 키를 생성한다.
-
핸드셰이크 종료(ChangeCipherSpec Finished): 클라이언트와 서버는 세션 키를 사용하여 모든 통신을 암호화하고 복호화할 수 있게되었다.
mTLS는 무엇인가?
mTLS는 Mutual TLS의 약자로, 양방향 TLS를 의미한다. 콩글리시로 뮤추얼 인증이라고도 불린다.
일반적인 상황에서 SSL 핸드셰이크는 클라이언트만 서버의 인증서를 검증한다. 그러나 어떤 상황에서는 서버도 클라이언트를 검증해야 할 필요가 있다. 예를 들어, 사내망 이나 고도로 보안이 필요한 다른 환경에서는 서버가 클라이언트의 신원을 확인하는 것이 중요할 수 있다. 이럴 때 mTLS가 사용된다. 대표젹으로 마이데이터에 mTLS 인증서가 사용되고 있다. mTLS를 통해 무단 접근을 훨씬 더 어렵게 만들어 네트워크 보안을 강화할 수 있게 된다.