본문 바로가기
공부/프로그래밍

[Linux-centos7] HTTPS 무료 인증서 설치 및 설정 방법(certbot 사용, apache)

by demonic_ 2018. 9. 14.
반응형

### certbot 을 다운로드 및 실행.

wget https://dl.eff.org/certbot-auto


# certbot-auto 가 설치된 디렉토리에서 아래의 명령어를 실행합니다.

실행 후에는 /etc 폴더내에 letsencrypt 파일이 생성되므로 root 권한 필요합니다.


실행하고 나면 셋중 하나를 선택.

1. 아파치 방식

2. 웹루트방식 => 웹루트폴더에 특정파일을 추가해 도메인을 검증받는 방법.

: 본인이 해당 도메인의 소유자인지 확인

3. 스탠드얼론 방식은 별도의 파일이 웹폴더에 추가되진 않는 장점은 있지만 기존 웹서버를 멈춘 상태에서 해야함.


여기서는 1번방식인 아파치로 설정합니다.


chmod a+x certbot-auto

./certbot-auto



아래는 실행 중 입력(input)받는 것들에 대한 내용입니다.


- 긴급 갱신 및 보안 통지에 사용하기 위해 이메일 입력

...

Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel):

[이메일 주소 입력]



- 서비스 약관 동의, ACME 서버에 등록여부.

...

(A)gree / (C)ancel: [동의여부 => 여기서는 A 로 동의]



- Let 's Encrypt 프로젝트의 창립 파트너이자 비영리 단체 Certbot을 개발하는 조직? EFF에 관한 이메일을 받을거라면 Y, 아니면 N

...

We'd like to send you email about EFF and our work to encrypt the web, protect its users and defend degital rights.

(Y)es / (N)o : N



- 등록할 도메인을 물음. 여러개를 등록하려면 콤마나 스페이스 등을 이용해 가능

(여기서 설정방식을 웹루트로 했다면 등록한 메일로 인증확인 메일이 날라옵니다. 여기서는 사용안함)

..

Please enter in your domain name(s) (comma and/or space separated) (Enter 'c' to cancel) : [도메인 입력]



- 생성할 인증 도메인 확인

Which names would you like to activate HTTPS for?

------------------------------

1: [등록한 도메인]

------------------------------

Select the appropriate numbers separated by commas and/or spaces, or leave input blank to select all options shown (Enter 'c' to cancel): [도메인 확인하고 해당 숫자를 입력]



- 위의과정을 모두 마치면 아래의 문구와 함께 생성 완료



- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Congratulations! You have successfully enabled https://[등록한 도메인]


You should test your configuration at:

https://www.ssllabs.com/ssltest/analyze.html?d=[등록한 도메인]

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


IMPORTANT NOTES:

 - Congratulations! Your certificate and chain have been saved at:

   /etc/letsencrypt/live/[등록한 도메인]/fullchain.pem

   Your key file has been saved at:

   /etc/letsencrypt/live/[등록한 도메인]/privkey.pem

   Your cert will expire on 2018-12-13. 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




### 아파치 설정파일 수정 

아파치 환경설정을 수정합니다.

vi /etc/httpd/conf/httpd.conf


# 443 환경설정에 다음 추가


<VirtualHost *:443>

...

SSLCertificateFile /etc/letsencrypt/live/[등록한 도메인]/cert.pem

SSLCertificateKeyFile /etc/letsencrypt/live/[등록한 도메인]/privkey.pem

Include /etc/letsencrypt/options-ssl-apache.conf

SSLCertificateChainFile /etc/letsencrypt/live/[등록한 도메인]/chain.pem

</VirtualHost *:443>


설정에서 보면 options-ssl-apache.conf 파일을 include 하는데, 해당 파일안에 SSLEngine on 설정이 있습니다.



아파치를 재시작 합니다.

sudo systemctl restart httpd.service


https 로 접근하여 도메인으로 확인합니다.

ACL 정책등으로 인해 443 포트가 막혀 안되는 경우가 있으니 별도 확인이 필요합니다.



### 인증서 갱신 테스트

./certbot-auto renew --dry-run


아래와 같이 실행결과가 출력됩니다.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Processing /etc/letsencrypt/renewal/booknme.co.kr.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Cert not due for renewal, but simulating renewal for dry run

Plugins selected: Authenticator apache, Installer apache

Renewing an existing certificate

Performing the following challenges:

http-01 challenge for booknme.co.kr

Waiting for verification...

Cleaning up challenges


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

new certificate deployed with reload of apache server; fullchain is

/etc/letsencrypt/live/booknme.co.kr/fullchain.pem

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

** DRY RUN: simulating 'certbot renew' close to cert expiry

**          (The test certificates below have not been saved.)


Congratulations, all renewals succeeded. The following certs have been renewed:

  /etc/letsencrypt/live/booknme.co.kr/fullchain.pem (success)

** DRY RUN: simulating 'certbot renew' close to cert expiry

**          (The test certificates above have not been saved.)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


Congratulations 문구가 나오면 갱신테스트에 성공한 것입니다.

테스트이기 때문에 인증서가 갱신된 것은 아닙니다.



### 자동 인증서갱신 등록

해당 인증서는 사용만료일이 90일 이므로 자동인증할 수 있도록 수정합니다

certbot-auto 파일을 bin 폴더로 이동하여 수시로 사용할 수 잇도록 합니다.

여기서는 해당파일을 root폴더 안에 넣어두었으므로 다음과 같이 명령어 입력하겠습니다.

mv ~/certbot-auto /bin


# 크론탭 설정

매월 1일 새벽 3시 30분에 certbot-auto 를 실행하고 로그를 저장합니다.

vi /etc/crontab

30 3 1 * * root /bin/certbot-auto renew >> /var/log/ssl-renew.log


크론탭 재시작

service crond restart


# 확인

ps -ef | grep cron







반응형

댓글