인증서란 무엇이고, 왜 필요한가? 인증서와 인증기관(CA)의 신뢰 구조
주소창 왼쪽의 자물쇠를 누르면 “이 연결은 안전합니다"라거나 “인증서가 유효합니다” 같은 말이 보입니다. 그런데 이 인증서라는 것은 누가 만들어 주는 것이고, 무엇을 근거로 “안전하다"고 말하는 걸까요. 그리고 사이트를 직접 만든 사람이 자기 사이트를 향해 “나는 안전하다"고 적으면 그만일 텐데, 왜 그건 믿어 주지 않는 걸까요.
이번 글에서는 SSL 인증서가 무엇이고 왜 필요한지, 그리고 그 인증서를 누가 보증하는지를 코드 없이 정리하겠습니다. 통신을 암호로 잠그는 원리 자체가 궁금하다면 주소창의 자물쇠는 무엇을 지키는가를 먼저 읽으면 도움이 됩니다.
인증서는 “이 사이트가 진짜"임을 증명하는 신분증입니다 #
HTTPS는 두 가지 일을 합니다. 하나는 주고받는 내용을 암호로 잠그는 것이고, 다른 하나는 지금 연결한 상대가 진짜 그 사이트가 맞는지 확인하는 것입니다. 이 가운데 두 번째, 곧 신원을 증명하는 종이가 인증서입니다.
사람으로 치면 신분증과 비슷합니다. 신분증이 의미가 있는 이유는 내가 직접 만든 종이가 아니라, 믿을 만한 기관이 발급해 주었기 때문입니다. 인증서도 마찬가지입니다. 사이트가 스스로 “나는 schoolofweb.net이다"라고 주장하는 것만으로는 부족하고, 믿을 만한 발급 기관이 그 주장을 보증해 주어야 비로소 브라우저가 받아들입니다.
암호화만으로는 왜 부족한가 #
여기서 흔히 생기는 오해가 있습니다. “통신만 암호로 잠그면 안전한 것 아닌가"라는 생각입니다. 하지만 암호화는 “아무도 엿보지 못하게” 해 줄 뿐, “지금 내가 대화하는 상대가 진짜인지"는 보장하지 못합니다.
가짜 사이트가 진짜와 똑같이 생긴 화면을 띄우고 통신을 암호로 잠근다고 해 봅시다. 내용은 분명 암호로 보호되지만, 그 암호의 반대편에 앉아 있는 것은 공격자입니다. 암호화만 있으면 “안전하게 가짜에게 비밀번호를 넘기는” 일이 벌어질 수 있습니다. 그래서 암호화와 함께, 상대가 진짜임을 보증하는 인증서가 반드시 필요합니다.
누가 보증하는가: 인증기관(CA) #
이 보증을 해 주는 기관을 인증기관, 영어로 CA(Certificate Authority)라고 부릅니다. CA는 인증서를 신청한 사람이 정말 그 도메인의 주인이 맞는지를 확인한 뒤, “이 도메인은 이 주체가 맞다"고 서명한 인증서를 발급합니다.
그렇다면 우리는 왜 처음 보는 CA를 믿어도 되는 걸까요. 그 비밀은 브라우저와 운영체제에 있습니다. 브라우저와 운영체제 안에는 신뢰할 만하다고 미리 검증된 CA들의 목록이 들어 있습니다. 이 목록에 든 CA가 서명한 인증서라면, 브라우저는 별도의 확인 없이 받아들입니다. 우리가 매번 CA를 일일이 검증하지 않아도 되는 이유가 여기에 있습니다.
신뢰는 사슬로 이어집니다 #
인증서는 보통 한 장이 아니라 사슬처럼 이어진 여러 장으로 동작합니다. 맨 위에 가장 중요한 루트 인증서가 있고, 그 아래에 중간 인증서가 있으며, 가장 아래에 우리 사이트의 인증서가 있습니다.
- 루트 인증서: 브라우저와 운영체제에 미리 심어 둔, 신뢰의 출발점입니다. 너무 중요해서 평소에는 깊이 보관해 두고 직접 쓰지 않습니다.
- 중간 인증서: 루트가 “이 중간 기관을 믿어도 된다"고 서명해 준 인증서입니다. 실제 발급은 이 중간 단계에서 이루어집니다.
- 사이트 인증서: 중간 인증서가 “이 도메인은 진짜다"라고 서명해 준, 우리 사이트가 실제로 쓰는 인증서입니다.
브라우저는 사이트 인증서에서 출발해 중간 인증서를 거쳐 루트 인증서까지 거슬러 올라가며, 사슬이 끊기지 않고 미리 믿는 루트에 닿는지를 확인합니다. 이 사슬이 한 군데라도 끊기면 브라우저는 인증서를 믿지 못합니다. 그래서 실무에서 “중간 인증서가 빠졌다"는 문제가 종종 사고로 이어집니다.
인증서에도 유효 기간이 있습니다 #
신분증에 갱신 기한이 있듯, 인증서에도 유효 기간이 있습니다. 요즘 발급되는 인증서는 유효 기간이 짧은 편이고, 기간이 끝나기 전에 새 인증서로 갱신해야 합니다.
갱신을 놓쳐 인증서가 만료되면, 브라우저는 신원을 더 이상 보증할 수 없다고 판단해 “안전하지 않음” 경고를 크게 띄웁니다. 사이트 자체는 살아 있어도 방문자는 빨간 경고 화면 앞에서 발길을 돌립니다. 그래서 요즘은 인증서를 사람이 챙기지 않고 자동으로 갱신해 두는 방식이 표준이 되었습니다. 다만 그 자동 갱신이 어긋나면 같은 문제가 그대로 생깁니다.
알아 두면 무엇이 편해지는가 #
- 경고 화면을 침착하게 읽습니다. “안전하지 않음"이 떴을 때 무작정 무시하거나 겁먹는 대신, 인증서 만료인지 이름 불일치인지 원인을 짐작할 수 있습니다.
- 갱신을 사고 전에 챙깁니다. 인증서에 유효 기간이 있다는 것을 알면, 자동 갱신이 잘 도는지 미리 확인해 둘 수 있습니다.
- 담당자와 대화가 됩니다. “중간 인증서가 빠졌다"거나 “와일드카드 인증서가 필요하다” 같은 말을 알아들을 수 있습니다.
마무리 #
오늘은 인증서가 무엇이고 왜 필요한지, 그리고 누가 그것을 보증하는지를 살펴봤습니다. 인증서는 사이트의 신분증이고, 인증기관(CA)이 그 신분을 보증하며, 그 신뢰는 루트에서 중간을 거쳐 사이트 인증서로 사슬처럼 이어집니다. 암호화가 “엿보지 못하게” 하는 일이라면, 인증서는 “상대가 진짜임을 보증하는” 일입니다.
여기까지가 개념이라면, 실제로 인증서를 발급받고 서버나 클라우드에 설치하고 자동으로 갱신하는 방법은 HTTPS 인증서 실전에서 손에 잡히게 다룹니다. 도메인이라는 이름이 먼저 있어야 인증서도 의미가 있으므로, 도메인이란 무엇이고, 왜 필요한가를 아직 안 읽으셨다면 함께 보시길 권합니다.