2020. 1. 26.

centos httpd (apache) 에 https 적용하기

https 를 하기 위해서는 인증서가 필요하고 인증서는 발급기관을 통해서 발급을 받아야 한다.
유료이고.. 가격은 각 기관마다 다르다.

무료로 사용하기 위해서는
openssl 을 이용하면 되는데.. 이건 발급기관이 자기 자신..

무료로 인증서를 제공하는 기관이 있다.
Let’s Encrypt 라고.. (https://letsencrypt.org/ko/)

https의 활성화를 위해 인증서를 무료로 발급하는 공익기관으로 모질라, 시스코, 크롬, 페이스북 등이 후원하고 있다.

아쉽게도 유효기간이 3개월이다.
3개월마다 재 인증을 해야 한단다.

centos7 에 certbot 을 이용해서 letsencrypt 인증서를 발급받고
자동으로 인증서를 갱신하도록 적용했다.


* certbot 설치

yum install epel-release  (certbot repository 설치)
yum install certbot
yum install python2-certbot-apache

를 설치한다.


* 인증서 발급

certbot –apache 로 인증서 발급 받는다.
- 최초 1번 관리자 email 등록 하고
- 뉴스, 캠페인 안내 받을래?? (n)
- httpd 에 등록된 servername list 중 원하는거 하나 선택
- 자동으로 https 로 redirect 구성할까? (y)


* 인증서 확인 및 config 수정

/etc/letsencrypt/live 안에 선택한 domain 위치로 이용.
- cert.pem
- chain.pem
- fullchain.pem
- privkey.pem
총 4개 파일 확인

/etc/httpd/conf.d/ssl.conf 내용 중에
Listen 443  이 부분 확인
<VirtualHost _default_:443> 을 <VirtualHost *:443> 으로 변경
DocumentRoot 을 기본 root 로 수정
ServerName 을 main domain:443 으로 수정
SSL Engine on 이 부분 확인

그리고 redirect 설정 
/etc/httpd/conf/httpd.conf 안에 해당 servername 에 대해 virtualhost 확인
RewriteEngine on
RewriteCond %{SERVER_NAME} = domain(인증받은 domain)
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_RUI} [END,NE,R=permanent]

내용을 확인하고

include 를 통해 새롭게 추가된 virtualhost 안에
SSLCertificateFile /etc/letsencrypt/live/인증서 domain/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/인증서 domain/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateChainFile /etc/letsencrypt/live/인증서 domain/chain.pem

이렇게 인증서 file link 된 것을 확인한다.

systemctl restart httpd 로 httpd 재 시작.


* 인증서 갱신 TEST

certbot renew –dry-run
을 실행해서 congratulation 이라는 문구가 나오면 성공 !!


* 인증서 갱신 자동화

linux 의 cron tab 으로 인증서 갱신 명령어를 주기적으로 실행한다.

crontab -e
30 0,12 * * * certbot renew

분 시 요일 일 월 명령어
해서 매일 0시, 12시 30분에 certbot renew 를 실행해라..
실제 저 명령어를 실행해 보면
아직 유효기간이 남았다고 skip 한다.
이거 봐서는 유효기간이 되면 알아서 갱신을 시도하는 듯 하다.

systemctl restart crond  (crontab 재 시작)
systemctl status crond

댓글 없음:

댓글 쓰기