⚠️ 아직 본문에 스크린샷 이미지를 첨부하지 않았습니다. 곧 정리해서 넣겠습니다.
블로그를 위해 웹호스팅을 시작
이 블로그는 설치형 워드프레스(WordPress)로 만들었습니다. 각종 웹 호스팅 혹은 서버 호스팅을 이용하여 구축할 수 있죠. 전통적인 서버 호스팅도 있고 클라우드 호스팅도 있습니다.
처음에는 AWS, GCP, Azure와 같은 메이저 클라우드 호스팅 플랫폼에 구축을 해볼까 생각했습니다. 구체적으로는 AWS Lightsail이 괜찮은 선택지 중 하나라고 생각하는데요. 처음부터 일을 너무 크게 벌리는 것 같았고, 서버 관리를 처음부터 직접 하기가 귀찮기도 했습니다.
그래서 선택한 것이 카페24 웹호스팅입니다. 최저요금 월 500원으로 유명한 곳이죠. 물론 처음에는 설치비 5,000원을 내야 하기 때문에 정말 500원만 결제하면 사용을 시작할 수 있는 건 아닙니다만, 엄청난 가격경쟁력임에는 틀림이 없습니다. 자세한 사양 및 요금 안내도 확인해 보세요.
카페24에는 심지어 매니지드 워드프레스 호스팅도 있습니다. 매니지드(managed)는 “관리형”이라는 뜻으로, 카페24에서 알아서 관리해준다는 의미입니다. 따라서 직접 워드프레스를 설치할 필요 없이 설치형 워드프레스의 모든 이점을 누릴 수 있죠.
저는 별 생각 없이 일반 웹호스팅을 선택했습니다. 설치를 할 줄 아니까 직접 관리하면 되겠지 하고 생각했습니다. 하지만, 돌이켜보면 그러지 않는 게 좀 더 편했을 것 같습니다. 서론이 길었네요.
내 웹사이트는 HTTPS를 지원하는가
본격적으로 작업을 시작했습니다. 카페24에 웹호스팅을 신청하고, 구입한 도메인 ituppercut.com도 연결해 줬습니다. 도메인의 네임서버 설정(NS 레코드)을 카페24의 네임서버로 바꾸어 도메인 연결 관리도 카페24에서 하기로 했습니다. 그러면 모든 게 쉽고 간편할 것으로 생각했죠.
설정을 마치고 테스트를 위해 웹 브라우저의 주소 창에 https://ituppercut.com/ 을 입력해서 접속했습니다. 그랬더니 정상적으로 접속되지 않았습니다. 아차 이걸 깜빡했구나!
요새는 HTTPS 기술이 널리 보급되어 오히려 http:// 로 시작하는 주소가 수상한 지경이 된 세상에서 이 문제는 심각했습니다. 이 문제를 푼 과정을 이 글로 정리했습니다.
카페24 일반 웹호스팅과 Let’s Encrypt
일반적으로 무료로 HTTPS 서비스를 위한 SSL 인증서를 발급받기 위해 널리 사용하는 것이 Let’s Encrypt입니다만, 카페24 일반 웹호스팅에서는 사용하기 어려웠습니다. 인증서 발급 과정에서 웹 서버의 설정을 변경하는 특수한 프로그램이 사용되기 때문에 서버 호스팅과 달리 서비스용 계정에 많은 제약이 있는 웹 호스팅에서는 대부분의 경우 불가능합니다.
웹 호스팅이지만 호스팅 업체에서 Let’s Encrypt 인증서 발급이 가능하도록 특별한 기능을 마련한 경우도 있습니다. 카페24의 매니지드 워드프레스 호스팅은 무료 SSL 인증서 기능을 지원하는데요. 아마도 Let’s Encrypt를 사용하는 것이 아닌가 추측됩니다.
저렴한 SSL 인증서를 찾아서
이럴 줄 알았으면 매니지드 워드프레스 호스팅을 사용할 걸 싶었으나 이미 결제 및 설정을 해버렸고 그래서 선택은 두 가지였습니다. 정말로 호스팅을 교체하거나, SSL 인증서를 마련하는 것이죠. 만약 저렴하게 SSL 인증서를 구할 수 있다면 호스팅 교체로 발생하는 매몰 비용 대비 나을 것이라고 판단하고 인터넷을 검색했습니다.
참고로 카페24도 SSL 인증서를 판매합니다만, 좀 더 저렴한 상품이 있을 것이라고 생각했습니다.
시큐어사인을 선택
구글에 “ssl 인증서 구매”라고 검색한 뒤 첫 페이지에서 발견한 곳이 시큐어사인(SecureSign)이었습니다. 도메인이 대놓고 sslcert.co.kr인 것이 인상적이었어요. 가장 싼 상품이 1년에 만원 이하로 저렴했고, 한국 회사가 운영하는 웹사이트로 보여서 좋았습니다. (이상한 번역으로 고통을 주는 해외 웹사이트가 정말 많죠.)
하지만 처음에는 너무 저렴한 가격이 의심스러워서 더 검색을 여러 가지로 했습니다. 그 과정에서 주로 사용되는 대안들도 많이 알게 되었는데요. 여러 가지 약점이 있더군요. 그래서 시큐어사인이 믿을만하다면 비용을 지불하더라도 선택하기로 결정했습니다.
시큐어사인이 믿을만한지 알기 위해 검색을 다시 열심히 했습니다만, 안타깝게도 자료가 많지는 않았습니다. 의외로 이는 알고 보면 사용자들이 별 문제가 없어서 다들 만족하고 아무런 후기도 안 남기기 때문이기도 하기 때문에, 결국 직접 체험해보기로 결정했습니다. 만약 잘못되면 밥 한 끼 사먹은 셈 치기로 했죠.
그 결과가 현재의 IT Uppercut 웹사이트입니다. 이미 지금 HTTPS 페이지를 보고 계실 가능성이 높습니다. 잘 적용되었고 아무런 문제도 없습니다. 이제부터 다른 분들께 도움이 될 수 있도록 구매 과정을 정리해 보겠습니다.
시큐어사인 SSL 인증서 구매 과정
다른 건 어렵지 않고 DCV(도메인 권한 유효성 검증)에만 유의하시면 됩니다. 이 글에서는 it-uppercut.com의 SSL 인증서를 구매하는 과정을 예로 들어 구체적으로 적어보겠습니다. 데스크탑 환경에서 진행한다고 가정합니다.
상품 고르기
먼저 이 페이지를 보고 상품을 고릅니다. 저는 이 글을 작성하는 시점에 7천원(부가세 별도)으로 할인 중이었던 Sectigo PositiveSSL을 선택했습니다만 할인이 없어도 가격이 비싸지는 않습니다. 할인하지 않아도 가장 저렴한 GoGetSSL Domain SSL을 고르셔도 같은 인증기관인 Sectigo(구 Comodo)의 상품이므로 이 글의 내용을 그대로 따라하는 데는 지장이 없을 것입니다.
혹시 위에 언급된 두 가지 외에 좀 더 비싼 걸 쓰면 더 좋은 게 아닌가 싶으신가요? 절대 그렇지 않습니다. 인증서 가격의 차이는 기술적인 차이가 아닌 배상금의 차이에서 주로 발생하는데, 네이버 정도의 사이트 만드시면 배상금이 의미가 있을지도 모르겠습니다. (심지어 네이버도 없을 겁니다.) 특히 어중간한 2~3만원대의 인증서를 선택하지 않도록 주의하세요. 아무 의미도 없습니다. 애초에 Let’s Encrypt를 사용할 수 있었다면 무료 SSL 인증서를 쓰고 싶었다는 점도 있구요.
회원 가입 및 담당자 설정
그 다음 시큐어사인 회원 가입을 합니다. 소셜 로그인이 가능합니다. 가입 후 로그인하면 나오는 사용자용 화면 기준으로 이후 내용을 설명합니다.
좌측 메뉴 중 “담당자설정” 그 다음 “기본 관리자”로 들어가셔서 관리자 설정을 합니다. 인증서 신청 과정에서 담당자를 골라야 하기 때문에 미리 해두시는 게 좋습니다. 전화번호는 필수 입력이 아닌 점 참고하세요.
인증서 신청하기
좌측 메뉴 중 “인증서 신청하기”에 들어가면 4단계에 걸쳐 신청 과정을 진행할 수 있습니다.
1. 상품선택
적절히 상품과 담당자를 선택하고 다음으로 넘어갑니다. 해당 단계에 설명되어 있지만 2년 혹은 3년을 구매하셔도 인증서 자체는 유효 기간 1년으로 발급됩니다. 1년이 지날 때마다 교체해야 하는 것이죠. 이건 제가 알기로는 관련 보안 지침상 어쩔 수 없는 부분입니다. 저는 일단 나중 일은 1년 뒤에 생각하기로 하고 1년 상품으로 구매했습니다.
2. CSR 설정
인증서 생성에는 CSR이라는 것이 필요합니다. 인증서 서명 요청(certificate signing request)의 약어로 인증서를 어떠한 내용으로 만들고 싶다는 요청 사항을 약속된 형식에 맞게 만들어낸 파일입니다.
직접 만들어서 사용할 수도 있고 시큐어사인에서 자동 생성해주는 것을 사용할 수도 있습니다. 저는 자동 생성 기능을 사용했고 그 이유는 다음과 같습니다.
- CSR을 직접 만들고 관리하는 것은 무척 어렵습니다. 방법 자체도 이 블로그 글 하나로 설명할 수 있는 수준의 내용이 아닙니다.
- 직접 만드는 것이나 자동 생성되는 것이나 결과물의 차이는 거의 없습니다. 약속된 형식 즉 표준에 맞게 만드는 것이기 때문입니다.
- 직접 만드는 것의 장점이 있다면 직접 만드는 것이 보안적으로 약간 유리합니다는 점입니다. 다만 저는 시큐어사인을 믿을 수 있다고 봤습니다.
자동 생성을 이용하기 위해서 우선 도메인을 입력합니다. 예를 들어 it-uppercut.com이 되겠죠. 만약 blog.it-uppercut.com과 같이 앞에 blog라던가 기타 서브도메인을 이용하실 예정이시면 꼭 붙여서 입력하세요.
웹서버 종류는 other를 고르시면 됩니다. 여기서 뭘 골라도 인증서와는 관계가 없습니다.
CSR 자동생성 정보를 추가로 입력해줍니다. 내용에는 한글을 넣으실 수 없습니다. 여기 입력하는 정보가 발급될 인증서에 들어가는 것은 아니므로 정확한 정보를 입력해서 발급 절차에 문제가 없게 하는 것이 좋습니다.
- 기관(회사)명: 개인의 경우 영문 실명을 넣으면 됩니다.
- 시/도 및 구/군: 거주하시는 곳의 영문 주소를 검색하셔서 필요한 부분을 복사해 넣으시면 됩니다.
- 국가: KR(대한민국)으로 선택되어 있습니다.
3. 인증방법
도메인 권한 유효성 검증(DCV)을 해야 하는데, 간단히 말해 도메인 주인이 맞는지 검증하는 절차라고 생각하시면 됩니다.
인증 방법으로 선택할 수 있는 것이 4가지가 제시되는데, 웹 호스팅을 이용하는 입장에서 선택 가능한 것은 DNS 뿐입니다. 각각 구체적으로 살펴보겠습니다.
- HTTP/HTTPS: 웹 서버의 설정이 변경 가능해야 하는데, 웹 호스팅에서는 어려운 일입니다. 이것이 선택 가능한 상황이면 Let’s Encrypt를 이용할 수 있을 상황에 가까우므로 유료 인증서를 발급하는 의미가 없겠죠.
- E-mail: 이 방법에서 사용하는 이메일 주소는 개인 메일이 아니라 해당 도메인을 사용해서 만든 이메일 주소입니다. 즉, 자신의 도메인으로 이메일 수신이 가능해야 하는데 어려운 일이기도 하고 대부분의 경우 불필요한 일입니다.
- DNS: 가장 무난한 방법입니다. 나머지 방법의 경우 일부 상품들이 지원하지 않기도 하는데 이것만큼은 지원합니다. 사실 대안도 없습니다.
DNS를 고른 후 다음으로 넘어갑니다.
4. 완료/결제
여기까지 오면 신규 신청이 완료됩니다. 이 페이지에서 바로 결제부터 하셔도 되지만, DCV를 먼저 하시기를 권합니다. Sectigo 상품은 DCV를 먼저 진행하는 것이 가능합니다.
DCV 진행
먼저 좌측의 “인증서 관리”에서 “전체목록”으로 들어갑니다. 나오는 목록에서 방금 신청 완료한 주문의 주문번호를 클릭합니다. 나오는 상세 화면의 “인증서정보” 부분에 DCV라는 항목이 있고, DNS 버튼이 있을 것입니다. 눌러줍니다. 이제 DCV 설정 정보가 안내될 것입니다.
DNS에 설정이 필요한 정보 3가지가 적혀 있습니다.
- 호스트(host)
- 타입(type)
- 값(value)
웹 호스팅에 도메인을 연결하기 위해 네임서버 설정을 해보신 분들은 이걸 보면 “아” 하실 수도 있습니다. 저의 경우에는 도메인의 네임서버를 카페24의 네임서버로 바꾸었기 때문에, 관련 설정을 카페24 호스팅 관리 페이지에서 하면 되었습니다. 별도의 네임서버를 사용하시는 분들은 각 환경에 맞게 설정하시기 바랍니다.
카페24 호스팅 관리 사이트를 열어서, 좌측의 도메인관리 – 도메인 부가서비스 – DNS 관리에 들어갑니다. 여기서 작업할 도메인을 선택하고 조금 위의 DNS 관리 버튼을 누릅니다.
위에서 얘기한 DNS 설정 정보 3가지 중 타입이 뭔지 확인합니다. CNAME일 가능성이 매우 높고 아니면 TXT일 것입니다. 해당하는 것의 관리를 눌러줍니다. (여기서는 CNAME이라 가정합니다.) 해당 영역이 펼쳐지는데요. 우측 상단의 CNAME 추가 버튼을 눌러줍니다.
여기에 두 가지 값을 입력하면 됩니다. 입력 후 확인을 눌러 추가합니다.
- 도메인 별칭: DCV 설정 정보 중 호스트(host)의 점(.) 앞 부분을 입력합니다. 뒤의 “.인증도메인” 부분까지 붙여넣지 않도록 주의하세요.
- 실제 도메인명: DCV 설정 정보 중 값(value)을 입력합니다. 위와 반대로 뒷부분도 꼭 넣어주세요.
다시 시큐어사인 페이지로 돌아가서 검증TEST 버튼을 눌러봅시다. 성공하면 아래와 같이 나옵니다.
실패하면 아래와 같이 나옵니다. 네임서버 설정에 약간의 시간이 걸리기도 하니 실패하더라도 1분 정도는 기다렸다가 재시도해보세요. 카페24는 30분까지는 기다려보라고 안내합니다만 보통 그렇게 오래 걸리지는 않습니다.
결제 및 인증서 받기
이제 결제를 하시면 됩니다. 여러 가지 결제 수단을 제공하며, 카카오페이도 지원합니다만 모바일 환경에서만 되는 것 같아서 저는 결국 스마트폰으로 했습니다. 결제만 스마트폰에서 하시고 나머지 과정은 데스크탑에서 하시면 됩니다.
결제가 완료되면 제출 대기 내역에서 주문 건을 볼 수 있고 제출하기 버튼도 볼 수 있습니다. 이 버튼을 누르면 실제 DCV가 진행되고 검증 성공하면 인증서가 발급됩니다. 이미 DCV 설정을 완료했기 때문에 과정이 매우 빠르게 진행되어 1분 이내로 발급 완료됩니다.
발급된 인증서는 발급 즉시 이메일로 전달됩니다. 제목이 [발급완료]로 시작하는 이메일의 첨부 파일을 확인해 보세요. 별개로 시큐어사인 웹사이트에서 다운로드 받을 수도 있습니다.
여기까지 인증서 구매를 완료했습니다.
구매한 인증서 설치 및 적용하기
인증서를 샀으니 사용을 해봅니다. 카페24 호스팅 관리 기능이 잘 되어 있어서 어렵지 않게 가능했습니다. 구체적인 과정을 적어보겠습니다.
인증서 압축 해제 및 필요한 파일 열기
압축을 풀면 다양한 파일이 있습니다. 여기서 필요한 건 다음의 두 파일입니다.
- 도메인_주문번호.crt.pem
(예: it-uppercut.com_20230507XXXXX.crt.pem) - 도메인_주문번호.key.pem
(예: it-uppercut.com_20230507XXXXX.key.pem)
위 두 파일을 열어서 내용을 카페24 호스팅 관리 웹페이지에 붙여넣어야 합니다.
- Windows(윈도우)에서는 메모장으로 여시면 됩니다. 혹은 크롬(Chrome)이나 엣지(Edge) 웹 브라우저의 새 탭에 파일을 드래그 앤 드랍하시면 파일이 열립니다.
- macOS에서는 텍스트 편집기로 여시면 됩니다. 파인더(Finder)에서 그냥 열면 키체인 접근 앱이 열리기 때문에, 텍스트 편집기 앱을 실행한 후 직접 여시는 것을 추천합니다.
- 위 방법으로 잘 안 될 때는 Visual Studio Code를 설치 및 사용해서 파일을 여시는 것도 추천하는 방법입니다. (Windows, macOS 모두 지원)
두 파일 모두 열어놓고 다음 단계로 넘어갑니다.
카페24 호스팅에 인증서 설치
카페24 호스팅 관리 사이트에서 좌측의 인증서관리 – 외부인증서 관리 메뉴에 들어갑니다. 들어가면 “외부 SSL 인증서 설치” 라는 영역이 보이는데, 위에는 인증서, 아래는 개인키를 넣을 수 있습니다.
위에서 이야기한 두 파일 중 이름 끝이 .crt.pem으로 끝나는 파일의 내용을 인증서(SSL CRT)에 붙여넣고 인증서 확인 버튼을 누릅니다. 정보가 잘 표시되면 문제가 없는 것입니다.
다음으로 이름 끝이 .key.pem으로 끝나는 파일의 내용을 개인키(Private Key)에 붙여넣습니다. 시큐어사인에서 구매한 인증서의 경우 아래의 비밀번호는 입력하실 필요가 없습니다.
이제 신청하기 버튼을 누르면 설치 신청이 완료됩니다. 이건 바로 끝나지는 않고 약간의 시간이 걸립니다. 저의 경우 10여분 정도 걸렸던 것 같습니다. 가끔씩 새로 고침을 하면서 확인해주면 다음과 같은 상태가 되면서 완료됩니다.
이제 웹 브라우저에서 HTTPS 주소를 사용해 접속하면 문제가 없음을 확인할 수 있습니다. 특별한 오류 메시지가 나오지 않고 주소 왼쪽에 잠긴 자물쇠 아이콘이 보이면 문제가 없는 것입니다. 크롬(Chrome) 웹 브라우저의 경우 자물쇠 아이콘을 눌러 보면 “이 연결은 안전합니다.” 와 같은 안내 메시지도 보입니다.
문제가 있다는 메시지가 뜰 때도 있는데 작업하던 웹 브라우저에 과거의 흔적이 남아서 그런 경우가 대부분으로 웹 브라우저 혹은 컴퓨터를 완전히 다시 시작하면 보통 문제가 해결됩니다. 아니면 스마트폰으로 들어가 보는 것도 방법입니다.
마무리
저는 이렇게 문제를 해결했습니다. 결과에 만족합니다. 작업 과정에서 특별히 문제가 있지도 않았습니다. 저는 이 과정을 휴일에 진행하였는데, 막힘없이 모든 것이 진행된 것으로 보아 모든 과정이 자동화되어 있는 것으로 보입니다.
비슷한 상황에 처하신 분들께 이 글이 도움이 되었으면 합니다. Let’s Encrypt를 사용할 수 없는 상황이 있기 때문에 SSL 인증서를 저렴하게 구매해서 사용하는 것이 좋은 해결책일 수 있습니다.
마지막으로, 이 글은 광고가 아닙니다. 저도 이 글이 광고였으면 좋겠습니다. 혹시 카페24나 비트시럽(시큐어사인)에서 저에게 광고를 주고 싶으시면 연락 주세요. 그럴 일은 없겠지만요.