본문 바로가기
CSP (Cloud Service Provider)/NAVER Cloud

SSL 인증서 갱신하기 for NCP(Naver Cloud Platform)

by BTC_JYP 2022. 12. 20.

안녕하세요~~ 저희는 공공의 적 팀입니다~~<(*^.^*)/


업무를 진행하다 보면 곧 SSL 인증서 만료가 되니 갱신을 요청하는 고객사들이 종종 있습니다.

클라우드를 사용하는, 특히 Naver Cloud Platform을 사용하는 고객사의 경우 위 요청이 들어왔을 때 해결하고자 하는 방법을 남겨보려 합니다.

 

우선 SSL은 무엇일까요?

SSL(Secure Sockets Layer)
보안 소켓 계층(Secure Sockets Layer, SSL)은 서버와 클라이언트 사이에 암호화된 링크를 구성하기 위한 표준 보안 기술입니다. 일반적으로 웹 서버와 브라우저, 또는 메일 서버와 메일 클라이언트(예: Outlook) 간에 설정됩니다. SSL의 후속 기술인 TLS(Transport Layer Security) 보다 더욱 널리 알려져 있습니다.
- digicert

SSL 인증서의 통신 방법에 대해 간략히 설명하면,

브라우저가 SSL로 보호된 웹사이트에 접속하려 할 떄 브라우저와 웹 서버는 'SSL Handshake'라는 프로세스가 순간적으로 일어나며 연결합니다.

출처: digicert

  1. 브라우저 SSL(https)로 보호된 웹 서버(웹 사이트)에 연결함. 브라우저에서 서버가 자신의 신원을 증명하도록 요청함.
  2. 서버 서버의 공개 키를 포함하여 자신의 SSL 인증서 사본을 보냄
  3. 브라우저 공인 인증 기관 목록과 대조해 인증서 루트를 확인하고, 인증서가 만료, 해지되지 않았는지, 연결하는 웹사이트의 일반 이름(common name)이 유효한지 확인함. 브라우저가 인증서를 신뢰할 경우 서버의 공개 키를 사용해 대칭 세션 키를 생성, 암호화한 후 다시 전송함.
  4. 서버 서버의 개인 키를 사용해 대칭 세션 키를 해독(복호화)하고 세션 키로 암호화된 승인을 회신하여 암호화된 세션을 시작함.
  5. 서버와 브라우저가 이제 전송되는 모든 데이터를 세션 키로 암호화함.

 

이외에 SSL암호화 이후 나온 TLS 암호화도 있지만 SSL이 더 잘 알려져 있고 공통으로 사용되는 용어이기도 합니다.

이는 다음에 비교해보도록 하겠습니다.


이제 본격적으로 Naver Cloud Platform에서 적용하는 방식을 알아보겠습니다.

 

보통 인프라 구축시, 안전한 보안을 위해 WAF(Web Application Firewall)를 사용하는 경우가 많습니다.

WAF는 실제 구축된 서비스 앞단에 위치한 ALB보다 더 앞단에 위치하며, ALB를 사용하지 않더라도 WAF를 적용하고자 하면 ALB를 생성한 후 사용하여야 합니다.

출처: NCP

하지만 이러한 WAF 서비스의 경우, 사용자가 접근하는 것을 불가능합니다.

따라서 NCP 온라인 문의하기로 pem 파일 전달 후 인증서 갱신 요청을 하면 간단히 끝이 납니다..


이 외에 직접 적용 시키는 방법도 소개하려 합니다.

※ 해당 방법은 NCP Classic 기준으로 작성

 

기존에는 Services > Networking > Load Balancer > SSL 인증서 관리에서 적용할 수 있었지만,

'SSL 인증서 관리' 버튼을 누르면 Certificate Manager로 이관되었다는 팝업이 뜨게 됩니다.

해당 서비스는 Services > Security > Certificate Manager에서 확인할 수 있으며, '외부 인증서 등록' 버튼을 누르면 인증서 등록이 가능한 팝업이 뜹니다.

크게 3개로 나누어지는데, Private Key, Certificate Body, Certificate Chain으로 모두 .pem 파일 내 텍스트를 붙여 넣으면 인증서 등록이 가능합니다.

 

보통 인증서 ZIP 파일을 전달받게 되면 .crt 파일로 전달받게 되며, 이를 .pem 파일로 변환하여야 합니다.

인증서 등록하는 상세한 방법은 NCP Certificate Manager 사용 가이드에 나와있지만 간략히 설명드리려 합니다.

 

Private Key(개인 키)의 경우 형태가 명확하기에 바로 인지가 가능합니다.

-----BEGIN RSA PRIVATE KEY-----
Base64–encoded private key
-----END RSA PRIVATE KEY-----

하지만 Certificate Body, Certificate Chain은 아래와 같은 형식으로 동일하기에 어느 부분에 복사 + 붙여 넣기를 해야 할지 헷갈리는 경우가 있습니다.

-----BEGIN CERTIFICATE-----
Base64–encoded certificate
-----END CERTIFICATE-----

Body와 Chain을 반대로 붙여넣어도 큰 문제가 없이 넘어갈 수 있지만, '추가' 버튼을 눌렀을 때 '유효하지 않은 인증서'라는 문구가 출력됨으로써 인증서 검증을 해줍니다.

 

.crt 파일 오픈 시 인증서 파일이 오픈되고 '인증 경로'에서 Chain과 Body를 확인할 수 있습니다.

간단하게 말하면 맨 아래(*. xxx.com)가 Body이고, 그 위 두 단계들이 Chain입니다.

Certificate Chain의 경우, 반드시 Root CA가 포함되어야 하며 가이드에 나온 설명대로 한 칸에 Chain 인증서를 모두 붙여 넣으면 됩니다.

-----BEGIN CERTIFICATE-----
Base64–encoded certificate
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
Base64–encoded certificate
-----END CERTIFICATE-----

 

맞게 잘 기입하였으며 인증서 등록이 완료되게 되고, 정상이라고 표시되는 것을 확인할 수 있습니다.

하지만, 사용중 항목(제일 우측)은 '아니요'가 되어있습니다.

마지막으로 등록한 인증서를 사용하는 방법을 알아보도록 하겠습니다.


등록한 인증서를 적용시키기 위해서는 이미 기존 인증서가 적용되어있는 Load Balancer에서 새로운 인증서를 적용할 수 있습니다.

Services > Networking > Load Balancer로 이동한 후 기존 인증서가 적용되어있는 공인 LB 선택 후 '로드밸런서 설정 변경'을 선택합니다.

로드밸런서 설정에 'Server Protocol' 부분에서 'HTTP'가 적용된 부분을 삭제 후, 다시 HTTPS 프로토콜을 추가하면 아래와 같은 팝업이 뜨는데, 이때 조금 전 등록한 새로운 인증서를 선택하면 이가 적용된 로드밸런서가 동작하게 됩니다.

 

감사합니다.

댓글