오래 전 부터 이런 저런 테스트 용도로 CAFE24의 저렴한 웹 호스팅을 사용하고 있다. 가장 저렴한 절약형이 월500원, 일반형이 월1,100원이다. 물론 더 비싸고 트래픽도 빵빵하게 주는 호스팅도 있지만 이런저런 게시판(워드프레스, 제로보드, 그누보드 등) 테스트용으로는 충분하다.

그리고 이번엔 웹호스팅에 SSL 인증서 적용을 테스트 했다. 웹서버에 SSL 인증서를 적용하는 것을 일반적으로 "보안서버 구축"이라고 부르는데... 이건 사실 엉터리 용어다. 서버가 웹서버만 있는 것도 아닌데 서버에서 실행되는 여러 서비스 중에서 웹서비스에 SSL(Secure Socket Layer)을 이용한 웹 암호화 통신을 적용하는데 "보안서버 구축"이라는 거창한 용어를 붙이는 것은 겉멋만 들은 우리나라 일부 공무원들의 허세(?)일 듯 싶다. 

SSL 인증서란?

SSL인증서를 이해하기 위해서는 먼저 SSL(Secure Socket Layer)가 무엇인지 이해해야 한다. SSL은 사실 번역조차 쉽지 않다. "보안 접속 계층???" 정도로 번역이 가능하겠지만 궂이 번역하지 말자. OSI 7 Layer와 TCP/IP 그리고 HTTP를 공부하다 보면 그냥 이해가 된다. 우리가 영어로 "Good Morning"이라고 인사하는데 궂이 번역해서 이해하지는 않지 않는가? 공부하다 보면 똑같아 진다.

SSL은 넷스케이프가 흥하던 웹 초창기 시절 넷스케이프에서 만든 암호 통신을 위한 규약(Protocol)이다. 즉 두 상대가 통신할 때 상대방(전송자)의 신원을 보증하고 전송하는 데이터의 기밀성(비밀)을 유지하며 전송된 데이터가 변조되지 않았음(무결성)을 보장해주기 위한 암호통신프로토콜이라고 이해하면 된다. 여기서 웹사이트의 신원 보증이라 함은 인증기관에서 SSL인증서가 발급될 때 등록된 웹사이트 주소와 실제 이용자가 접속한 웹사이트의 주소가 일치함을 확인하는 것을 말한다. 

현재는 SSL의 결함을 보완한 상위버전인 TLS(Transport Layer Security)로 바뀌었지만 워낙 SSL이라는 이름이 유명하기 때문에 현재도 SSL이라고 부르며 웹서버가 클라이언트(웹 브라우저)와 암호화 통신을 시작할 때 서버의 신원 보증 및 통신에 사용할 암호키를 포함하고 있는 전자적인 문서인 SSL인증서도 실제로는 TLS프로토콜을 사용하지만 SSL인증서라고 부른다.

결론적으로 SSL인증서는 암호화통신을 할 때 웹사이트의 신원을 보증하는 신분증의 역할과 암호통신을 할 때 웹브라우저에게 공개할 암호키인 공개키를 포함하는 전자적인 문서라고 이해하면 된다.

SSL인증서를 이용해 암호통신을 수행하는 웹사이트에 접속하면 웹브라우저의 한쪽 구석에 자물쇠 표시가 되거나 "안전함" 등의 문구가 뜨는 것을 볼 수 있으며 주소가 표시되는 URL도 "https" 로 표시된다. 반대로 암호화 통신을 지원하지 않는 웹사이트에 접속하면 "주의 요함"이나 적색 표시 등의 표시가 되며 주소의 URL도 "http"로 표시된다. 즉 SSL이 적용되지 않은 웹사이트에서는 로그인 및 개인정보수정 등의 기능을 수행할 때 ID, 비밀번호, 주소, 생일, 계좌번호, 주민등록번호 등의 개인정보가 암호화되지 않고 인터넷으로 전송된다는 의미다. 웹브라우저와 웹사이트 사이에서 누군가가 통신을 감청하면 바로 개인정보가 "털린다"고 보면 된다.

그래서 정보통신망법 및 개인정보보호법에서는 인터넷을 통해 개인정보를 수집하고 전송하는 정보통신서비스 제공자와 개인정보처리자에 대해 SSL등과 같은 방법으로 암호화 통신을 하도록 의무화하고 있다.

카페24 웹 호스팅의 SSL 적용 여부

카페24에 저렴한 웹 호스팅을 사용하면 기본적으로 "카페24ID.cafe24.com" 이라는 웹 주소(URL)을 부여 받는다. 그리고 이 URL로 접속할 때는 기본적으로 웹서버에 멀티도메인 SSL인증서(*.cafe24.com)가 적용되어 있기 때문에 https 접속이 가능하다.

URL주소 창에 자물쇠 표시가 뜨면서 웹사이트의 신원확인과 암호통신이 정상적으로 이루어지고 있음을 알 수 있다.

그러나 cafe24.com이라는 주소 보다는 자신만의 아이덴티티를 표현해줄 수 있는 주소를 사용하고 싶어하는 경우가 대부분이다. 때문에 CAFE24에서는 개인적으로, 또는 호스팅을 신청한 회사가 별도의 tiger.com등과 같은 도메인을 구입하고 id가 abc인 abc.cafe24.com에 www.tiger.com 이라는 도메인주소(URL)로 접속하도록 도메인 연결 메뉴에서 연결하면 www.tiger.com으로도 abc.cafe24.com에 접속할 수 있도록 지원하고 있다.

하지만 암호통신을 위해 https://www.tiger.com 이라고 접속하면 다음과 같은 에러가 뜬다.

이 에러는 호스팅을 하고 있는 웹서버에 tiger.com 이라는 사용자의 도메인이름으로 발급된 SSL인증서가 적용어있지 않기 때문에 발생한다. 이용자는 웹브라우저에 https://www.tiger.com 이라는 웹사이트에 SSL인증서를 이용한 암호통신방식으로 접속하고자 했지만 웹사이트에는 www.tiger.com 이라는 도메인주소로 발급된 SSL인증서가 적용되어 있지 않기 때문이다.

이 문제를 해결하기 위해서는 www.tiger.com 혹은 tiger.com 이라는 도메인주소로 인증기관에서 SSL인증서를 발급받아 호스팅을 하고 있는 웹서버에 적용해야 한다.

Cafe24 웹호스팅에 SSL인증서 발급받아 적용하기

결론적으로 말하자면 무료SSL인증서를 발급받아 적용하는 것은 실패했다. 가장 대표적인 Let's Encrypt SSL 인증서는 몇가지 방법을 통해 적용하고자 했지만 모두 마지막 인증서 발급 신청단계에서 원인을 알 수 없는 오류가 발생하거나 호스팅 받고 있는 웹사이트에 올린 인증키 파일에 접근할 수 없다는 오류가 나오면서 사이트 검증이 되지 않는다. (인증기관이 도메인에 SSL인증서를 발급해줄 때는 실제 웹사이트에 인증기관이 요구하는 파일을 업로드하고 인증서를 요청하는 도메인주소에 접속해 도메인의 소유자가 맞는지를 확인한다.) 웹 브라우저에서 접근하면 정상적으로 키 파일을 다운로드 받고 접근이 가능한데 Cafe24에서 Let's Encrypt 관련 주소를 차단해서 그런지 해외 인증기관에서는 접근이 불가능하다고 표시된다.

그리고 된다 하더라도 Let's Encrypt SSL인증서는 유효기간이 3개월이다. 즉 3개월 마다 재발급 받아 다시 다시 적용해야 하는데... 이때마다 카페24에 별도로 요청을 해야하니... 너무도 귀찮은 작업이 될 것이어서 그냥 포기했다.

그러다 찾은 것이 "저렴한 유료 SSL인증서"를 발급받아 적용하는 것이다. 찾아본 바에 따르면 SecureSign이라는 Comodo 인증서 리셀러가 12,000원/1년의 SSL인증서를 발급해주고 있었다. 그래서 이 인증서를 발급받고 Cafe24 호스팅에 연결된 나만의 도메인에 적용을 해보았다.

먼저 내 호스팅 사이트에서 도메인 소유자의 신원정보를 입력하여 개인키와 CSR(Certificate Signing Request)을 생성해야 한다. CSR에는 도메인에 대한 정보와 공개키가 포함되어 있다.

위와 같이 카페24 호스팅 관리자페이지에서 CSR과 개인키를 생성하고 생성된 CSR과 KEY(개인키)를 다운받아 PC혹은 USB등 안전한 장소에 저장해야 한다.

아래는 다운받아 노트북PC에 저장한 화면이다. ssl.csr이 공개키와 도메인정보가 포함된 CSR파일이고 ssl.key가 개인키다.

CSR과 개인키가 준비되었다면 SecureSign 사이트에 회원가입을 하고 12,000원/1년짜리 Sectigo PositiveSSL 인증서 신청페이지로 간다.

위와 같이 신청하고자 하는 도메인의 인증서 담당자를 선택해야 한다. 메일주소가 실제로 존재하는지 꼭 확인해야 한다.

다음은 인증서 발급을 위한 정보를 입력해야 한다. 신청하고자 하는 도메인 주소(CN)을 입력한다. tiger.com 이라면 tiger.com을 입력하면 된다. tiger.com을 입력하면 기본적으로 tiger.com 혹은 www.tiger.com 두개의 도메인에 대해 SSL인증서를 적용할 수 있다.

웹서버는 자신의 웹서버에 맞는 엔진을 선택하면 된다. 내 경우 cafe24.com 호스팅은 nginx를 사용하고 있었다.

그리고 CSR은 CSR직접입력을 선택해야 한다. 그리고 앞의 CAFE24 CSR생성 과정에서 다운로드 받은 두개의 파일 중 ssl.csr을 노트패드 등으로 열어 전체를 선택한 뒤 위 화면처럼 붙여넣는다. -----BEGIN 부터 REQUEST-----까지 모두 선택해야 한다.

그리고 도메인권한인증 방법을 EMAIL로 선택한 뒤 왼쪽의 파란 버튼을 눌러 인증할 메일주소를 선택한다. 이 메일 주소는 실제해야 하며 선택한 메일주소로 인증메일이 보내진다.

여기서도 http를 선택하고 관련 파일을 호스팅 웹서버의 주소에 생성해봤지만 접근이 차단되는지 인증이 실패한다. 마찬가지로 직접 브라우저에 인증주소를 입력하면 정상적으로 접근이 된다. Let's Encrypt SSL 인증서 생성과정에서 접근이 안되는 것과 동일한 증상이다. 진짜로 CAFE24에서 이 인증방법을 막은 것인지 궁금하다.

다음단계로 넘어가면 인증서 신청은 완료된다. 아래 화면의 경우 재발급을 신청한 경우다. 재발급 과정도 마찬가지 과정을 거친다. 1년 내에는 무제한으로 재발급을 받을 수 있다.

다음은 신청한 인증서에 대한 실제 발급절차를 진행하기 위한 "결제/제출" 단계다.

위 화면처럼 주문번호와 도메인(CN)이 보이고 "제출하기" 버튼이 표시되어 있다. 제출하기를 누르면 실제 인증서 발급과정이 진행된다.

제출이 완료되면 다음과 같이 화면이 바뀐다. 인증종류는 앞에서 선택한 EMAIL로 표시되고 있다.

EMAIL로 인증방법을 선택했기 때문에 해당 이메일주소로 인증메일이 전송되어 있다. 아래 화면은 실제 전송된 인증메일의 내용이다.


이 경우 다음의 스마트워클을 통해 인증메일을 받은 화면이다. 도메인을 Cafe24에서 구입했고 구입한 메일의 메일주소를 다음 스마트워크를 통해 관리하고 있기 때문에 메일화면이 다음메일 환경이다.

메일의 본문에 보면 here를 클릭하고 아래에 표시된 validation code를 입력하라고 되어 있다. 코드를 복사해두고 here를 클릭한다.

복사한 코드를 붙여넣기한 뒤 Next를 클릭한다. Next가 Close로 바뀐다.

이메일 인증이 완료되었다.

잠시 후 다시 인증서 발급페이지로 가서 화면을 리프레쉬해보면 다음과 같이 인증서가 발급되어있고 다운로드가 가능한 상태가 되어 있음을 알 수 있다.

다운로드 버튼을 눌러 인증서를 다운로드 받는다. 아래 화면처럼 도메인주소와 발급일자가 포함된 zip 파일로 다운로드되는데 해당 파일의 압축을 해제한다.

압축을 풀면 그 안에 도메인주소와 발급일시가 포함된 .crt.pem 파이이 보인다. 이 파일을 노트패드(아래에서는 vscode에디터)로 열고 전체를 선택해 복사한다.

복사한 내용은 카페24의 "인증서관리" - "외부인증서 관리" 메뉴로 가서 "인증서(SSL CRT)"항목에 붙여넣기한다. 

붙여넣은 뒤 "인증서 확인"을 누르면 아래에 SSL 인증서 정보가 표시된다. 도메인과 인증서를 발행한 CA(인증기관)이 표시된다.

다음은 개인키를 복사해 붙여넣어야 한다. 처음 카페24에서 다운로드 받은 CSR과 개인키(key) 파일에서 ssl.key 파일을 노트패드로 열고 전체를 선택해 복사한다.


그리고 아래와 같이 "개인키(Private Key)" 입력창에 붙여 넣는다. 비밀번호에는 CSR 생성 시 입력한 비밀번호를 넣는다.

그리고 화면 하단에 있는 신청하기 버튼을 누르면 아래 처럼 SSL 인증서 설치 요청이 접수된다. 

3영업일 이내에 설치해 주겠다는 메시지 창이 보여진다.

하지만... 여지껏 Cafe24에 뭔가 요청해서 하루 안에 안된적이 없었다. 참..부지런하다는 생각이 들었다고나 할까..아니면 뭔가 시스템이 잘 구축되어 있어 클릭~클릭~하면 적용되도록 자동화를 잘해뒀다고나 할까.. 

어찌됐든.. 1영업일도 안지났는데... 바로 적용이되었다.

"대기" 상태에서 "연결 PORT(43871)"로 바로 적용되었다. 일요일 오후에 적용하고 신청했는데.. 월요일 12시경에 확인하니 적용이되어 있었다.

얼른... https://~~~.com으로 접속해보았다.

브라우저의 주소창에 "주의 요함"이라고 떴었는데 자물쇠 표시가 되면서 안전한 사이트로 변신했다.

Cafe24에서는 자체적으로도 연3만원대의 SSL인증서를 판매하고 자동으로 적용할 수 있는... 더 편리한 기능을 제공하고 있다. 만약 쇼밍몰이나 많은 사람이 방문하는 비즈니스 목적의 웹사이트라면 Cafe24에서 판매하는 SSL인증서를 구입해 적용하는 것이 더 편리하다.


  • 늘품아빠 2019.04.08 14:45 신고

    잘 보구 갑니다.
    얼마전 무료 SSL인증서 가지고 서버 세팅하느라 고생했던 기억이 납니다.
    구글링하면 없는게 없더라고요.

    • taeho Tae-Ho 2019.04.08 16:23 신고

      오죽하면 "구글신에게 물어보라"는 말이 있을까요.. ㅎㅎ
      맞습니다. 무료 인증서도 있는데.. 어찌된 일인지 cafe24의 웹호스팅은 인증기관에서 검증하는 단계에서 접근이 안되는가 보더라구요.

  • 에스델 ♥ 2019.04.09 09:32 신고

    카페 24의 절약형 웹호스팅 가격이
    정말 저렴하네요. ^^
    카페 24 호스팅에 외부 SSL 인증서
    적용하는 방법 잘 보았습니다.
    좋은 하루 보내세요!

    • taeho Tae-Ho 2019.04.09 23:10 신고

      네..국내에서 제일 저렴하죠... 장난감처럼 갖고 놀기 딱 좋은 호스팅 서비스죠~ ^^

    • 키스세븐 2019.04.10 10:25 신고

      저기 딴지는 아니고... 국내에서 제일 저렴하지는 아니예요.
      예를들어 10년 넘게 운영중인 팀장닷컴의 경우 월250원이예요.
      카페24는 그나마 주는 하드와 트래픽량도 DCN서비스라며 짤라서 주는데, 팀장닷컴은 통째로 다 사용가능하거든요.
      찾아보면 더 있을 수도...

    • taeho Tae-Ho 2019.04.10 13:28 신고

      음..스펙을 비교해보니.. 몇가지 차이가 있는데요..
      DB사용 가능한 용량이라든가.. 이메일주소 지원개수.. CDN 및 스트리밍 지원여부 등...
      종합적으로 따져보면 cafe24가 나은데요..? 물론 월 사용료만 놓고 보면 팀장닷컴이 더 저렴하긴 하네요.. ^^

  • 키스세븐 2019.04.10 10:07 신고

    https의 중요성에 대해서는 인정하지 않을 수 없긴 한데...
    이게 반드시 유료라는 것이 좀 언잖네요. 개인 사용자는 그러기엔 부담이 있으니 말예요.
    이건 다시 말하면 돈을 따로 내지 않으면 "주의 요함"이 되는 상황이라... 돈을 더 안내서 주의 요함이 되는...ㅋ
    검색엔진 쪽에서 뭔가 다른 인증방식을 만들어줬으면 해요.

    • taeho Tae-Ho 2019.04.10 10:18 신고

      SSL인증서를 유료로 발급하도록 하는 이유는 웹서비스 제공자와 이용자 외의 공신력 있는 제3의 기관이 웹서비스제공자의 서비스에 대한 서비스제공자 신원보증을 하도록 하기 위함입니다. 그런 차원에서 최소한의 SSL인증서 발급시스템 운영비 보존 때문입니다. 단순히 암호화 통신만 한다면 궂이 인증기관의 SSL인증서를 웹사이트에 적용할 필요는 없습니다만 이용자가 접근하는 웹사이트가 인증서 발급시에 기재된 웹사이트와 맞는지 확인이 가능하도록 하려면 어쩔 수 없는 상황이라고 보입니다.
      제가 찾아본 바로는 유료 인증서 중에 가장 저렴한 곳이 본문에서 언급한 곳 이더라구요.

    • 키스세븐 2019.04.10 10:21 신고

      맞아요. 그래서 인정을 하긴 하는데...
      이 "주의 요함"이라는 것이
      1. 안전함
      2. 문제를 발견 못함
      3. 문제가 있을 수 있음
      4. 문제가 있음
      으로 볼 때 3번, 4번에 가깝기 때문에 그게 언짢다는 얘기예요. 문제를 발견하지 못할 수도 있는데 문제가 있을 수도 있다는 어감이거든요. 그래서 돈을 더 사용하지 않으면 문제가 있을 수 있다는 느낌이 싫은 거죠.

  • 2019.07.04 18:02

    비밀댓글입니다

    • taeho Tae-Ho 2019.07.04 21:43 신고

      어떤 이유인지는 알 수 없지만 개인키와 문자열을 복사해 붙여넣을 때 온전한 개인키가 입력되지 않은 것 아닌가 생각됩니다.
      저도 이 작업을 여러번 해본 것은 아니기 때문에 작업하신 과정을 하나씩 보면서 복기해 보지 않으면 이유를 알기는 어렵습니다. 도움이 못돼 죄송합니다~