CentOS 8 에 yum 으로 letsencrypt SSL 적용하기 및 인증서 관리 > 개발

본문 바로가기
사이트 내 전체검색

개발

CentOS 8 에 yum 으로 letsencrypt SSL 적용하기 및 인증서 관리

페이지 정보

profile_image
작성자 관리자 (61.♡.26.87)
댓글 0건 조회 4,857회 작성일 19-12-20 22:03

본문

CentOS Apache 환경에서 let's encrypt 를 적용하는 작업을 정리해 보았다.


1. certbot 설치

공식적으로 CentOS 8 에는 yum 만으로 설치가 되지 않는 모양이다.
=> 지금은 센토스 8 이 업데이트가 되어서 yum 으로 설치가 가능하다.
https://certbot.eff.org/lets-encrypt/centosrhel8-apache

참고로, CentOS 7 은 공식문서에 yum 으로 설치하는 방법으로 되어 있다.
https://certbot.eff.org/lets-encrypt/centosrhel7-apache

아래 1-1 을 스킵하고, 1-2 공식스크립트 설치로 바로 가도록 한다.


1-1. yum 으로 설치

아파치 서버가 설치되어 있다는 가정하에, mod_ssl 을 설치한다.
# yum install mod_ssl

certbot 은 EPEL 저장소에 있으므로 epel 저장소를 설치해야 한다.
# yum install epel-release

certbot 설치
# yum install certbot
관련된 python3-* 패키지들이 10개가 넘게 같이 설치가 된다.

버전 확인
# certbot --version
certbot 1.0.0
오호~ 드디어 버전이 1.0 으로 올랐다..


1-2. 공식스크립트로 설치

인증서 설치를 위해서
센토스 7 에서 설치하는 방법으로 시도를 해 보았는데, 오류가 난다.

# certbot certonly --apache -d domain.com
를 하면, 아래와 같은 오류가 나면서 진행이 멈춘다.
The requested apache plugin does not appear to be installed

로그를 살펴 봐도, 아파치 관련 무슨 플러그인이 없다고 나오는데 뭔지를 알 수가 없다.
구글링을 해 보면, python-certbot-apache 패키지를 설치하라고 나오는데,
센토스 8 은 python3 를 사용하므로 python3-certbot-apache 패키지를 찾아봐도 없다.
센토스 7 에서 확인해 보니, python2-certbot-apache 패키지는 있는 것으로 확인이 된다.

결국 해결하지 못하고, 소스설치를 시도해 본다.
https://certbot.eff.org/lets-encrypt/centosrhel8-apache

근데, 소스를 받아서 컴파일 하는 것이 아니고, 실행 스크립트 하나를 다운로드 받는다.
실행을 해 보면.. 헐~~
필요한 패키지들과 의존성 패키지들의 목록이 무려 40개가 넘게 뜨면서 설치할 거냐고 묻는다. 헐헐헐~~~
이 스크립트의 역할이,
물론 나중에 필요한 패키지가 다 설치가 되어 있으면, 인증서를 받는 본연의 목적으로 동작하겠지만,
초기 실행시에 필요한 패키지들을 설치하는 과정이 있고, 여기서 필요한 패키지들을 설치하는 모양이다.
gcc 를 포함해서 kernel-header, 각종 lib 등등 엄청 많은 다양한 종류의 패키지들이 설치된다.

설치되는 실행 스크립트 파일은 아래 위치에 둔다. 파일 1개다.
/usr/local/bin/certbot-auto


2. 인증서 설치

인증서 설치를 위한 사전작업으로 2가지가 필요하다.
- 인증하는 도메인의 IP 가 해당 서버를 향하고 있어야 한다.
- 아파치 서버에 인증하는 도메인이 virtual host 설정되어 있어야 한다.
 
이제 본격적으로 설치를 해 보자.
아래 예제에서의 certbot 명령어는 certbot-auto 로 바꾸어야 한다. (잠깐만! 이건 확인 요망!)

# certbot certonly --apache -d domain.com
설명하자면,
certonly : obtain 만 하고 install 은 하지 않는다.
--apache : 아파치 플러그인
-d : 도메인

도메인이 여러개라면 -d 를 계속 붙여서 사용할 수 있다.
ex) certbot certonly --apache -d a.domain.com -d b.domain.com -d c.comain.com

그러면, 확인창이 3가지 정도 나오는데,
이메일을 입력하라고 하고, 사용동의하는 것, 이메일을 공유하겠냐? 등이 나온다.

확인해 주면, 아파치 설정파일들 중에서 virtual host 와 관련된 것들을 몇개 보여주면서 선택하라고 한다.
아마도 관련 파일이 1개밖에 없다면, 그냥 진행하지 않을까 생각된다.

선택해 주면, 드디어 종료하고 마치게 된다.

설정파일 및 관련파일들의 위치는 다음과 같다.
/etc/letsencrypt/
/var/log/letsencrypt/

참고로, 인증서 파일은 4가지가 있는데 각각은 다음과 같다.
cert.pem - 인증서 파일
chain.pem - 인증서 발급자 파일
fullchain.pem - cert.pem 과 chain.pem 을 하나로 합쳐놓은 파일
privkey.pem - 인증암호를 해독하는 개인키
* 참고 : https://blog.lael.be/post/5107

그래서, 인증서 파일에 fullchain 을 넣고, 개인키에 privkey 를 넣으면 되는 듯 하다.
서버체인 에는 원래 주석처리 되어 있는 것으로 보아서 fullchain 으로 대체가 되는 모양이다.

CertificateName 은 아래 명령어로 알 수 있다.
# certbot certificates

ㅇ 아파치 설정 - /etc/httpd/conf.d/ssl.conf
[code]
....
SSLCertificateFile /etc/letsencrypt/live/CertificateName/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/CertificateName/privkey.pem
....
[/code]


3. 인증서 갱신(renewal)

인증서는 3개월짜리이므로, 3개월마다 갱신을 해 줘야 한다.
크론작업으로 갱신시 월간작업으로 등록하면 안된다. 주간작업 이하로 설정해야 한다.
참고 : https://www.baragi.net/bbs/board.php?bo_table=dev&wr_id=8779

갱신 명령어는 아래와 같다.
# /usr/local/bin/certbot-auto renew

아파치 서버는 별도로 재실행해 주지 않아도 되는 모양이다.
* 참고
갱신시에는 아파치 서버를 재시작 하지 않아도 갱신이 적용되지만,
도메인을 추가하면 아파치를 재시작 해 줘야 되는 모양이다. 


3-1. 인증서 강제 갱신 --force-renewal

기본적으로, 만료일이 1개월보다 적게 남았을 때 갱신을 해 준다.
1개월보다 많이 남았으면, renewal 해 주지 않는다.
이때, 특별한 상황에서 갱신을 해야 하는 경우가 생길 수 있다.
아래와 같이 --force-renewal 을 추가해 주면, 만료일 상관없이 갱신을 할 수 있다.

# /usr/local/bin/certbot-auto renew --force-renewal

* 참고 : https://www.boannews.com/media/view.asp?idx=86797



4. 현재 인증된 도메인들 확인하기

여러 도메인의 인증서를 발급받은 경우, 도메인들의 목록을 확인하는 방법이다.
참고로, /etc/letsencrypt 폴더에는 다 뒤져 봐도 도메인 목록 같은 것은 안나온다. ^^
명령어는 다음과 같다.

# /usr/local/bin/certbot-auto certificates

인증이름, 도메인들, 인증서 남은날짜 등등의 정보를 볼 수 있다.



5. 도메인 삭제

하나의 인증서에 여러 도메인이 있을 경우, renew 를 하면 포함된 모든 도메인에 대해서 renew 를 하게 된다.
그런데, 어느 한 도메인이라도 해당 서버에서 없어졌다면, renew 가 되지 않는다.

** 주의 **
이 경우, 해당 도메인을 빼고 나머지 도메인만으로 인증서를 만들어 버리면,
기존의 인증서가 바뀌는 것이 아니고, 새로운 인증서가 만들어져 버린다.
인증서 이름에 -0001 이런식으로 새로운 인증서가 만들어진다.

일단, 잘못해서 새로운 인증서를 만들어 버렸다면, 새로만든 인증서를 삭제한다.
# /usr/local/bin/certbot-auto delete --cert-name xxxxxxxxxx-0001

해결방법은, --cert-name 으로 인증서명을 지정하고, 인증서를 새로 만들면 된다.
그러면, 해당 인증서에 삭제된 도메인이 있는데 remove 하고 새로 인증서를 만들거냐고 물어 본다.
응답해 주면, 새로운 인증서가 만들어진다.
https://certbot.eff.org/docs/using.html?highlight=domain#changing-a-certificate-s-domains

인증서가 변경이 되면, 아파치를 재시작해 주어야 하는 모양이다.
# systemctl restart httpd



* 참고
https://certbot.eff.org/lets-encrypt/centosrhel8-apache

추천0

댓글목록

등록된 댓글이 없습니다.

Total 386건 8 페이지
  • RSS

검색


사이트 정보

Copyright © Baragi.Net. All rights reserved.