dinist

CentOS8이 설치된 Apache 웹서버에 Let's encrypt SSL 적용하기 본문

Google Cloud Platform/Compute Engine

CentOS8이 설치된 Apache 웹서버에 Let's encrypt SSL 적용하기

dinist 2020. 8. 8. 22:44

이제 HTTPS 사용은 필수라고 봐야한다.

현재 나의 Compute Engine에는 CentOS8이 설치되어있다. 여기에 Apache웹서버를 설치하여 웹서버로도 활용 할 수 있도록 하고있다. 그런데 크롬에서 웹페이지에 접근하면 다음과 같이 거슬리는 화면이 있다.

 

주의 요함이라는 말이 보인다. 클릭해보면 사진과 같이 HTTPS를 사용하지 않았다라는 얘기가 나온다.

맞는말이다 HTTP는 HTTPS통신에 비해 위험하다 데이터가 평문으로 전송되기 때문이다.

 

네이버의 경우에는 HTTPS가 적용되어 있어 다음과같이 보인다.

글자색이 초록색이라 뭔가 안정적인 느낌?이 든다.

HTTPS를 적용해야할것만 같다. 이제 적용해보도록 하자.

 

SSL을 발급하는 방법은 무료도 있고 유로도 있지만, 단순 개인 연습에는 무료를 사용하면 된다.

실제 실무에서는 거의 대부분 유료 SSL을 사용할 것이다.

 

무료 SSL중에서 Let's Encrypt라는 SSL을 이용할것이다. Let's Encrypt는 90일동안 인증서 유효기간이 정해져 있고 이후에는 갱신을 해줘야한다. 이때, 갱신작업을 할 수 있는 Certbot을 이용하여 모든 과정을 진행할 것이다.

 

Certbot 홈페이지

https://certbot.eff.org/

 

Certbot

Different Internet services are distinguished by using different TCP port numbers. Unencrypted HTTP normally uses TCP port 80, while encrypted HTTPS normally uses TCP port 443. To use certbot –webroot, certbot –apache, or certbot –nginx, you should h

certbot.eff.org

Certbot 홈페이지에 접속하면 사용하는 웹서버와 운영체제에 따른 설치 방법이 안내되어 있다.

나는 Apache와 CentOS8을 선택하여 설치를 진행했다.

 

EPEL repo 추가

 

가이드를 보면 EPEL을 활성화하라고 나온다.

 

enable EPEL을 클릭하면

 

yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

dnf config-manager --set-enabled PowerTools

위 명령을 실행하라고 안내되어있다. EPEL repo를 설치해주자.

 

Certbot 설치

 

Repo 설치가 완료되면 본격적으로 Certbot을 설치한다.

다음 명령을 입력하여 설치를 진행한다.

 

sudo dnf install certbot python3-certbot-apache

위와같이 설치가 완료되면 이제 Certbot을 이용하여 인증서를 설치할 차례다.

httpd.conf 수정

그 전에 httpd.conf파일의 ServerName을 수정해준다.

 

이 과정을 진행하지 않으면

Unable to find a virtual host listening on port 80 which is currently needed for Certbot to prove to the CA that you control your domain. Please add a virtual host for port 80.
이라는 오류를 출력하며 인증서 발급에 문제가 발생한다.

httpd.conf 파일에서

 

ServerName 도메인주소 로 수정한다.

예를들어 도메인주소가 testpage.com일 경우

ServerName testpage.com 으로 수정하면 된다.

 

인증서 설치

httpd.conf 설정까지 마무리 되면 본격 설치를 진행한다.

sudo certbot --apache
// apache 설정이 변경 될 수 있다.

sudo cerbot certonly --apache
// apache 설정을 변경하지 않는다.

원하는 방향에 따라 인증서를 설치한다. 나는 apache설정을 변경하는것을 원치 않아서 certonly 옵션을 추가했다.

 

나는 이미 인증서를 생성한 적이 있어, 바로 인증서 도메인 주소를 입력하라고 나오지만

 

원래 과정은..

 

1. 서버 관리자의 메일 주소 입력

2. 사용 약관에 대한 동의 / 비동의 여부 (동의를위해 A 입력)

3. 입력한 메일 정보를 통해 정보를 수신하는지에 대한 여부 (수신하려면 Y, 수신하지 않으려면 N 입력)

 

이렇게 세가지를 묻는다.

 

글 작성 이전에 시험삼아 미리 패키지 설치 및 인증서 발급과정을 진행했다가 

삭제 후 재설치를 하니까 앞선 과정은 안나오고 바로 도메인주소를 물어본다.

 

여하튼 과정이 모두 진행되면

 

이렇게 인증서가 발급되었다고 축하해준다. 이제 발급받은 인증서를 웹서버에 적용해보자.

 

인증서 적용

에디터를 통해 ssl.conf 파일을 수정해야한다.

vim /etc/httpd/conf.d/ssl.conf

명령 실행 후 다음 부분을 설정한 도메인으로 변경해준다.

SSLCertificateFile /etc/letsencrypt/live/도메인주소/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/도메인주소/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/도메인주소/fullchain.pem

ServerName 도메인주소:443

이후 웹서버를 재시작 해준다.

systemctl restart httpd
또는
service httpd restart

 

이제 https://도메인주소 으로 웹브라우저에서 입력해보자.

 

다음과같이 Let's Encrypt의 인증서가 보인다.