HTTPS, 인증서 발급 챌린지, 무료/유료 인증서 차이점

김형섭 (Matthew)·2023년 9월 8일
2

네트워크의 원리

목록 보기
6/6
post-thumbnail

Why

SSL 은 공인인증서 입니다.
우리가 온라인에서 신분을 증명할때 사용하는 그것과 거의 같습니다.
이제 웹사이트는 SSL 인증서가 반드시 필요한데요.

이것은 다름아닌 웹사이트를 만든 사람(회사)이 진짜 존재하고, 도메인 주인이 맞는지 확인 하는 것입니다.

그러니까 여러분이 아임웹 이용하기 위해 imweb.me 라는 도메인으로 접속 했는데, 이 imweb.me 도메인이 정말 아임웹인지, 다른 서비스인지 이름만으로는 사실 판단이 불가능 하죠. imbwe.com 이거나 imweb.company 를 사용할 수 도 있지 않습니까.

그런데 SSL 인증서가 있으면, imweb.me이 진짜 주식회사 아임웹이 맞는지 다른 곳에서 확인해준 증거가 됩니다.
그래서 지금 접속한 사이트를 믿고 이용 해도 된다는 뜻이지요.

결국, 신뢰있는 기관에서 인증(증명) 받았기에, 그 증표로 유효기간이 있는 인증서를 준 것이고 이것이 https 입니다.

인증서의 유효기간은 1년, 3년 정도로 그렇게 길지 않는데, 이유는 그 사이에 웹사이트의 주인이 바뀔 수도 있고
더 이상 사업을 영위하지 않을 수도 있으므로 주기적으로 확인하기 위해서 입니다.

그렇다면, 이런 인증서를 일단 받아야 겠죠?

그런데, 인증서를 발급 받는 방법이 여러가지가 있어요.
유료 인증서를 구매할 수 도 있고, 무료 인증서를 사용할 수도 있어요.

이 과정에 인증서를 써야된다는 것만 알았다면, 오늘 그 자세한 원리를 알아보기로 합시다.
우선 https 접속의 원리 부터 한번 알아 보고 인증서 발급 방법의 원리도 차근 차근 설명할께요.

기본적인 Https 접속의 원리

  • 브라우저에 https:// 로 시작하는 웹사이트에 접속 하면 가장 먼저 인증서를 내려 받습니다.

  • 그 인증서 정보를 읽어서

  • 지금 접속한 도메인 주소와 인증서의 도메인이 일치하는지 먼저 보고요.
    (일치하지 않으면 경고가 뜨고 가짜 사이트 입니다.)

  • 유효기간도 남았는지 체크 합니다.

  • 발급 기관이 내가 아는 기관 중 하나 인지도 확인 하죠.

    • 내가 아는 기관이라 함은, 이미 널리 알려진 루트 인증서 기관들 중에 하나 인지 보는 것입니다.
    • 이 목록은 OS 제조사들이 처음부터 같이 제공하며 일반적으로 유저가 마음대로 수정 할 수는 없습니다.
  • (이 과정도 자세한 기술적 인증 방법이 있는데, 그것은 RSA 암호화로 이루어 지지만, 다음 기회에 설명하겠습니다.)

  • 모든 것이 맞다면, 이 사이트 도메인은 실제 존재하는 회사가 소유하고 있고, 또한 제 3자의 기관에서 이 도메인의 주인이라는 것이 증명 됐으니 브라우저는 신뢰하고 접속을 허용 합니다.

  • 이제 부터는, 내 PC와 웹사이트 서버간에 데이터를 주고 받는 통신 내용 전체를 암호화 합니다.

    • 이때 사용하는 암호키는 인증서를 통해 사전에 공유 합니다.
  • 접속자마다 암호가 다른데 최초 접속 과정에서 암호키 자체를 인증서의 암호키로 한번 주고 받습니다.

  • 이 모든 과정은 몇초 이내로 순간적으로 행해지고, 처음 한번 진행하면 일정 기간 동안 다시 확인하지는 않아요.

복잡하지만, 이해되는 그런 과정입니다.
그렇다면, 웹사이트 주인은 인증서를 어떻게 발급 받을까요?

인증서를 발급 받는 방법

유료 인증서

  • 한국정보인증, 한국전자인증 등의 회사가 그런 발급 기관중 하나이고
  • 웹사이트는 Verisign, Digicert 같은 곳을 많이 사용 합니다.

무료 인증서

  • AWS가 제공하는 Amazon 인증서는 기본적으로 무료 입니다. (AWS를 사용할 때)
  • 또한, Let's Encrypt 같은 무료 인증서 발급 비영리 회사가 있습니다.

유료 vs 무료

사실, 실 사용에 아무런 기술적 차이가 없습니다.

그러나 무료 인증서의 경우는 무료다 보니 유료 인증서 만큼 철저하게 주인 확인이 어렵고, 신뢰성이 조금 떨어집니다.

인증서가 유료인 이유는, 발급 기관에서 신청자가 진짜인지 대면 확인을 해야 하고, 각종 서류 인증, 사람의 인건비가 발생하기 때문 입니다.

그런데 무료 인증서는 위 과정이 없어요.

잉? 그러면 무료 인증서는 대면 확인을 안 한다는 것인가요?

네, 할 수 없습니다. 비용이 드는 일인데 무료로 하면 망하겠죠.

그런데도 무료 인증서도 써도 된다고요?

무료 인증서는 대신, 사실 확인 비용이 별로 안드는 다른 방법을 씁니다.

특히 웹사이트는 도메인이 있기 때문 입니다.

그래서 웹사이트 인증서는 무료 발급이 많은데, 애플리케이션 인증서, 공인인증서 등은 유료 밖에 없는 것입니다.

무료 인증서 회사의 인증 방법

실제로 존재하고, 주인 인지 확인하는 간편한 비대면 방법 중 딱 1가지가 있습니다.

웹사이트 인증서에만 사용할 수 있는 방법인데요.

바로 도메인 입니다.

.com, .co.kr 같은 그 도메인이요.

도메인을 등록 해보셨다면 꽤 많은 정보를 입력하고, 도메인 정보 수정은 도메인 회사에서 철저히 확인 하며 진행 하고 있음을 아실 것입니다. 안그러면 어떤 사이트도 믿을 수 없겠죠.

바로, 이 도메인 정보를 수정하는데 권한이 필요한 점을 이용 하는 것인데요. 이렇게 합니다.

무료 인증서의 본인 확인 절차

무료 기관은 인증서 발급을 요청받으면, 그 도메인의 주인이 맞는지를 체크 해야 합니다.

간편하게 몇가지 방법이 있는데, 이를 챌린지 라고 표현 합니다.

  • HTTP-01 챌린지
  • DNS-01 챌린지
  • 기타 챌린지

HTTP-01 챌린지는 이 도메인으로 접속 되고 있는 웹사이트를 이용 합니다.

웹사이트 주인이라면, 웹사이트 내용을 바꿀 권한이 있겠죠.

그래서 http://<YOUR_DOMAIN>/.well-known/acme-challenge/<TOKEN> 이런 경로로 우리가 제시한 TOKEN 이름과 값을 출력해보라고 시킵니다.

그래서 웹사이트 주인이 우리 끼리만 아는 그 값을 웹사이트에 표시해 준다면, 오 주인 맞네 하고 인증서를 발급해주는 원리 입니다.

DNS-01 챌린지 는 도메인의 DNS 서버를 이용 합니다.

웹사이트 주인이라면, 도메인 주인이라면 그 도메인의 DNS 정보를 바꿀 권한이 있겠죠.

따라서 DNS에 지금 우리가 제시하는 특정 레코드를 넣으라고 시킵니다.

그래서 우리끼리만 아는 그정보가 DNS에 나타나면, 오 주인 맞네 하고 인증서를 발급해주는 원리 입니다.

이 방법이 HTTP-01 보다 어렵지만 더 안전하고 DNS 조작이 더 상위 개념이므로 이 방법을 성공 시키면 와일드카드 인증서(*.도메인.com)도 발급이 가능 합니다.

기타 챌린지라고 기재한 것은 TLS-SNI, TLS-ALPN 같은 방법인데요.

이들은 개인 정보 이슈에, 네트워크 국가 통제, 안전성 위험 같은 이유로 현재 사용되지 않아요.

무료 인증서의 제한

위와 같이 도메인을 이용한 비대면 인증만 가능 하다보니, 정말 마음 먹으면 악용 할 수 있습니다.

예를 들면, 도메인을 사서 인증한 후, 약 1년 후에 운영 한다거나 하는 시간차 공격(?) 같은 것이죠.

이를 방지하기 위해서

무료 인증서 발급 기관들은 인증서의 유효기간을 굉장히 짧게 줍니다.

유료인증서는 기본 1년 인데 반해, 무료 인증서는 90일 입니다.

또한, 무료 인증서는 웹사이트 인증서로만 사용이 가능 합니다.

마무리

부족한 글이지만, Https 와 인증서에 대해 조금이라도 도움이 되셨으면 좋겠습니다.
내용을 잘 이해하지 못해도 괜찮아요.

어쨋든 https 가 붙은, 인증서가 있는 사이트는 결국 안전하구나 라고 생각하셔도 무방 합니다.
앞선 과정을 모두 거쳐왔기 때문 이죠.

또한, 무료 인증서 Let's Encrypt 라고 무조건 안전하지 않다고 생각할 필요 없어요.
쓰기에 따라 매우 좋은 대안이고, 특히 모든 웹사이트가 SSL이 필수인 시대에 모두 유료 인증서만 고집한다면 웹 생태계가 매우 혼란스러웠을 것입니다.

앞으로도 좋은 글로 찾아뵙겠습니다.

아임웹 CTO 매튜 드림.

profile
CTO at Imweb, 20년차 개발 장인, 전) 플레이오토 CTO/창업자

0개의 댓글