카테고리 없음

lets encrypt 를 이용한 웹서버(아파치) 무료 인증서 생성 및 설치

web data 2020. 2. 5. 17:41

lets encrypt 를 이용한 웹서버(아파치) 무료 인증서 생성 및 설치

 

명령어 몇줄이면 3개월짜리 무료 인증서가 설치되며, 만료되기 전에 자동 갱신되도록 스캐줄러 등록까지 된다.

안쓸 이유 없다.

 

* 관련 사이트

lets Encrypt :https://letsencrypt.org/

 

* 아래 certbot 을 이용해 설치

https://certbot.eff.org/

 

 

위사이트 방문하여 중간쯤 에 자신의 시스템을 선택하면 관련 안내페이지로 이동한다.

여기 예제에서는 Apache,  Ubuntu 18.04 를 선택하였으므로 이를 기준으로 한다.

 

위처럼 선택하면 아래와 같이 설치안내 페이지로 이동하며, 그대로 따라하면 된다.

 

* 설치 시 운영중인 웹서버를 내리지 않아도 된다.

 

위 사이트에 표기된 설치 안내는 아래와 같다.

 

1. 서버 ROOT 권한이 있는 사용자로 SSH 접속 한다.

 

2. 리포지토리 목록에 Certbot PPA를 추가

sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository universe
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update

 

3. certbot 설치

sudo apt-get install certbot python-certbot-apache

 

4. 인증서 설치

   - 여기선 아파치용 인증서만 받도록 아래 같이 했다.

sudo certbot certonly --apache

진행시 사용할 도메인을 입력하라고 나오는데, 아파치에 기본 설정되어있던 도메인이 있다면, 리스팅되어 번호를 고르라고 나오며, 없으면 직접 입력할 수 있다, 콤마로 구분하여 여러개 도메인을 등록할 수 있다. 

서버 1대에 세팅할 수 있도록 여러개 도메인이라도 단일 인증서로 발급된다. 

향후 도메인 추가 등록시에는 수정모드로 다시 발급하면 된다. (뒷부분...)

 

발급이 완료되면 '/etc/letsencrypt/live' 의 경로에 파일들이 생성되며, 이 파일들을 이용해 웹서버 설정한다.

 

  --> 여기선 알아서 각자 apache 에 설치 한다. (아래는 나의 예)

- /etc/apache2/sites-available/default-ssl.conf 

<IfModule mod_ssl.c>                                                                                                                       
        <VirtualHost _default_:443>                                                                                                        
                ServerName {도메인}                                                                                                    
                ServerAlias {서브.도메인}
                ServerAdmin webmaster@localhost                                                                                            
                DocumentRoot /home/{계정경로}/public_html                                                                                
                ErrorLog ${APACHE_LOG_DIR}/error.log                                                                                       
                CustomLog ${APACHE_LOG_DIR}/access.log combined                                                                            
                SSLEngine on                                                                                                               
                SSLCertificateFile      /etc/letsencrypt/live/{도메인}/cert.pem                                                        
                SSLCertificateKeyFile /etc/letsencrypt/live/{도메인}/privkey.pem                                                       
                SSLCertificateChainFile /etc/letsencrypt/live/{도메인}/chain.pem                                                       
                <FilesMatch "\.(cgi|shtml|phtml|php)$">                                                                                    
                                SSLOptions +StdEnvVars                                                                                     
                </FilesMatch>                                                                                                              
                <Directory /usr/lib/cgi-bin>                                                                                               
                                SSLOptions +StdEnvVars                                                                                     
                </Directory>                                                                                                               
        </VirtualHost>          
</IfModule>

위와 같이 수정한 뒤 아래 진행

sudo a2enmod ssl
sudo a2enmod headers

sudo a2ensite default-ssl

//테스트
sudo apache2ctl configtest

//서버 시작
sudo systemctl restart apache2

 

5. 위 단계까지 진행되면 발급이 완료된 것이며, 시스템 Cron 에 자동 갱신 스캐줄러가 들어가 있다고 안내가 된다.

인증서 만료전에 알아서 자동으로 업데이트 될것이다.

만약을 위해 갱신 테스트를 진행하려면 아래와 같이 한다.

sudo certbot renew --dry-run

 

자동갱신 스캐줄러는 아래중 하나에 들어있을 것이란다.

/etc/crontab/
/etc/cron.*/*
systemctl list-timers

 

6. 잘 등록됐는지 확인해봐라...

확인 : https://www.ssllabs.com/ssltest/

 

 

추가적으로 최초 등록시 여러개 도메인을 한꺼번에 등록했는데, 나중에 추가하려면 아래와 같이 한다.

certbot certonly --apache --cert-name {기존인증서도메인} -d domain1.com,www.domain1.com,mysub1.domain1.com 

- 위 {기존인증서도메인}은 '/etc/letsencrypt/live' 경로에 가면 생성되어 있는 디렉토리명이다. 

- 기존 등록되어 있던것 + 새로 등록할것까지 모두 ',' 로 나열한다.