보안서버인증서

개인정보취급시 보안서버인증서(https) 적용은 필수사항 입니다. 보통  38,000원/년 수준의 비용을 지불하여 적용하게 되지만, Let's Encrypt 인증서는 무료적용이 가능한 장점이 있습니다.

Let's Encrypt는 사용자에게 무료로 TLS 인증서를 발급해주는 비영리기관 입니다. 발급된 인증서는 유효기간이 90일이며 만료 30일 전부터 갱신할 수 있다. 갱신 가능 횟수는 무제한 입니다.

루트 도메인, 서브 도메인 뿐만 아니라, 하나의 인증서로 모든 서브 도메인에 사용 가능한 *.example.com 형태의 와일드카드 서브 도메인 인증서도 무료로 발급이 가능합니다.  
자세한 내용은 링크를 참고해주세요.

사전 준비사항

도메인 연결

도메인 연결과정이 완료되어 있어야 합니다.

방화벽 443 포트 개방

  1. Lightsail 콘솔 접속
  2. 인스턴스 관리 선택
  3. 네트워킹 탭 선택
  4. 방화벽 규칙추가

아래의 그림처럼 규칙을 추가하여 방화벽에서 443 포트를  개방합니다.

보안서버인증서 설치

에이전트 실행

Certbot 이라는 에이전트를 통해  자동화된 설치를 진행합니다.

1. 루트 권한 및--debug 플래그로 파일을 실행합니다.

[ec2-user ~]$ sudo ~/certbot-auto --debug

2. "Is this ok [y/d/N]," 프롬프트에서 "y"를 입력하고 Enter 키를 누릅니다.

3. "Enter email address (used for urgent renewal and security notices)," 프롬프트에서 갱신 알림 및 보안공지를 수신할 이메일  주소를 입력하고 Enter 키를 누릅니다.

4. 프롬프트에서 Let's Encrypt 서비스 계약 조건에 동의합니다. 진행하려면 "A"를 입력하고 Enter 키를 누릅니다.

-------------------------------------------------------------------------------
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf. You must agree
in order to register with the ACME server at
https://acme-v01.api.letsencrypt.org/directory
-------------------------------------------------------------------------------
(A)gree/(C)ancel: A

5. EFF 권한 부여를 클릭하면 "Y" 또는 "N"를 입력하고  Enter 키를 누릅니다.

Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let's Encrypt project and the non-profit organization that
develops Certbot? We'd like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.

(Y)es/(N)o: Y

6. HTTPS 를 활성화할 도메인을 선택합니다. 번호를 콤마 또는 여백으로 구분하여 입력한 후 Enter 키를 누릅니다.  번호를 지정하지 않는 경우 목록전체가 선택됩니다.

Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: example.com
2: www.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 

Certbot은 Apache의 구성을 완료하고 성공 및 기타 정보를 보고합니다.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://test.com and 
https://www.test.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IMPORTANT NOTES:- Congratulations! Your certificate and chain have been saved at:
  /etc/letsencrypt/live/test.com/fullchain.pem
  Your key file has been saved at:
  /etc/letsencrypt/live/test.com/privkey.pem
  Your cert will expire on 2020-10-26. To obtain a new or tweaked
  version of this certificate in the future, simply run certbot-auto
  again with the "certonly" option. To non-interactively renew *all*
  of your certificates, run "certbot-auto renew"
- If you like Certbot, please consider supporting our work by:
  Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
  Donating to EFF:                    https://eff.org/donate-le

설치가 완료되었습니다. 

브라우저를 통해  도메인에 접속하여 https 접속을 확인합니다. 예제로 사용했던 도메인의 인증서가 정상적으로 설치 되었습니다.

 

보안강화 설정

보안 강화에 대한 사항은 아래 링크를 참조해주세요.

자동화된 인증서 갱신

기본적으로 만료 시간이 90일로 짧은 호스트 인증서를 생성합니다. 이 명령을 자동으로 호출하도록 시스템을 구성하지 않은 경우 certbot 명령을 수동으로 다시 실행해야 합니다. 이 절차는 자동예약 스케줄러(cron) 를 설정하여 Certbot을  자동실행 방법을 보여줍니다

라이트 세일 서버 생성시 시작 스크립트 적용했다면 아래 사항은 설치과정에서 이미 반영이 되어 있으므로 생략할 수 있습니다.

자동예약 스케줄러 설정파일을 엽니다.

[ec2-user ~]$ sudo vi /etc/crontab

다음 행을 파일의 마지막에 추가하고 파일을 저장합니다.

39      1,13    *       *       *       root    certbot renew --no-self-upgrade

매일 하루 두번 01:39와 13:39에 모든 인증서를 점검하고 만료 날짜가 다가오고 있는 인증서를  자동으로 갱신합니다. (시간설정 변경가능 )

자동예약 스케줄러(cron) 데몬을 다시 시작합니다.

[ec2-user ~]$ sudo service crond restart

 

참고자료

위로