Cloud/GCP

[GCP] SSL - Load balancing 인증서 발급과 테스트 방안

달빛궁전- 2024. 1. 15. 15:26

 

목적 : 
https를 사용하기 위해서는 SSL인증서가 필수입니다. 
웹서버에 설치 or L4 Switch에서 설치해두고 ssl offload를 사용하거나 클라우드의 경우 Load Balancer가 해당 역활을 할 수 있습니다. 
보통 고객사에서 인증서를 발급 받은 후 MSP사에 등록요청 후 운영하는 것이 일반적이고, 설계하는 입장에서는 SSL인증서를 발급 받는 일이 거의 없기는 하나 알아두면 나쁠 것이 없기에 정리합니다. 
본 문서에서는 테스트용 SSL인증서를 발급받아, GCP Load balancer에 등록해 보겠습니다.

 

내용 : 
SSL인증서는 발급되는 파일 포맷이 많습니다.
CRT, CER, DER, PEM, PFX, JKS등이 있습니다.
대부분 웹서버 종류에 따라 (jks는 java기반으로 tomcat에서 많이 사용) 나누어지며 Public Cloud는 아래와 같습니다.
AWS는 .pem 인증서형식
azure는 pfx형식 (crt + ca +key 파일 병합이며  주로 IIS에서 쓰이는 파일)
GCP는 .pem 형식을 지원합니다.

 

발급 전 참고사항 : 
SSL인증서 발급시에는 CSR(Certificate Signing Request)이 필요합니다.
CSR발급에는 수동발급, 자동발급이 있습니다.
수동발급의 경우에는 발급할 서버가 필요하며, Private Key생성후 CSR을 발급하게 됩니다.
예전에는 수동생성만 지원하였으나, 지금은 대부분의 발급업체에서 자동발급을 지원해주고 있습니다.
CSR의 발급진행시 입력할 내용은
이메일주소, 조직, 부서, 도시, 나라이며 산업 표준규격으로 내용은 어디에서 발급하든 동일합니다.

자동생성과 수동생성의 차이점은 꽤 있으나 중요한 점만 정리해보면

수동생성의 경우 개인키 파일을 직접생성해야 되나, 자동생성시에는 발급사가 대행해 줍니다.이로인해 자동생성시에는 서버에서 CSR을 굳이 생성 안해도 됩니다.다만 보안에 민감한 고객사라면, 개인키 파일도 가지고 있기 위해 수동으로 작성할 수도 있습니다.

수동생성으로 진행 후 파일 손상이나 누락으로 재발급 신청시 CSR을 재작성 해야 됩니다.

Apache, IIS, Tomcat등 웹서버별 인증서 포맷이 다른데 이때마다 직접 포맷 변환을 해야합니다.자동생성의 경우 발급시 pfx, jks등의 포맷을 지원해 줍니다.

 

  • 발급방법

    고객사에서 발급한다면 국내 발급사를 이용하면 되며
    웹서버에서 스크립트를 통해 Let’s Encrypt를 사용하면 인증유효기간은 90일여지만, 인증연장을 자동화 할 수 있습니다.
    다만, 위의 경우 무료이고 웹서버에 스크립트로 돌려야해서 개발, 테스트용으로는 괜찮으나 상용으로 사용을 권장하지는 않습니다. 
    보통은 국내 대행사 (comodo등)에서 구매하는 경우가 많습니다.
    본 문서에서는 ZeroSSL이라는 발급사이트를 사용하겠습니다.
    한개의 도메인에 한해서 90일간 무료로 사용할 수 있는 인증서를 1개 발급해 줍니다.

    웹사이트 : https://app.zerossl.com/dashboard

    zerossl은 가입시 도메인 책임자 e-mail로 가입되어야 합니다.  
    도메인 생성시 입력했던 책임자 e-mail로 가입을 진행합니다. 
    책임자 e-mail이 기억이 안날경우 아래의 KISA사이트에서 WHOIS조회로 확인합니다.

    https://xn--c79as89aj0e29b77z.xn--3e0b707e/kor/whois/whois.jsp 



가입 후 새로운 인증서를 선택 후 진행합니다.



해당 도메인을 사용할 수 있는지 확인합니다.


90-Day로 선택 후 진행


CSR생성관련 입니다. Auto-Generate로 선택합니다. 
미선택시에는 캡쳐화면과 같이 E-mail, 조직, 도시등의 정보들을 입력합니다. 
본 문서에서는 Auto-Generate CSR로 진행합니다.



도메인에 대한 인증설정 입니다. 
관리자에 대한 E-mail, DNS(Cname), HTTP File Upload를 통해 인증을 지원합니다.


CNAME의 경우 cname내용 값과 TTL값을 맞추어 주면 됩니다.


E-mail로 진행을 하였으며, 아래의 인증메일을 통해 인증을 진행하면 됩니다.

 

 


도메인 인증이 끝나면, 각 웹서버, Cloud등에 맞춘 인증서 파일을 제공합니다. 
Google App Engine을 선택하여, 다운로드 합니다.

해당 파일의 내용은 아래와 같습니다.



ca_bundle.crt : 신뢰하는 인증기관 정보 
certificate.crt : 인증서 파일 
private.key : 비공개키 (개인키)

특정 발급사의 사용방법을 적는게 맞는지 고민은 하였으나.. 
어떤 발급사든지 아래의 형식을 지킨다는 것만 아시면 될 것 같습니다.

CSR발급 발급할 도메인의 소유자를 증명하는 절차 (E-mail, DNS등) CSR자동생성시에는 해당 웹서버에 맞게 다운로드 받은 뒤 적용 CSR수동생성시에는 인증서 변환작업 필요.


- GCP에 인증서 등록

GCP console > 보안 > 데이터보호 > 인증서관리자 or Loadbancer생성시 인증서를 업로드 하는 메뉴가 있습니다.


인증서 : certificate.crt 
비공개키 : private.key


인증서 관리자에서 등록한 인증서를 확인할 수 있습니다.



Load Balancer에서 Frontend Configuration에서 등록한 인증서를 사용할 수 있습니다.