lets encrypt 를 이용한 웹서버(아파치) 무료 인증서 생성 및 설치
lets encrypt 를 이용한 웹서버(아파치) 무료 인증서 생성 및 설치
명령어 몇줄이면 3개월짜리 무료 인증서가 설치되며, 만료되기 전에 자동 갱신되도록 스캐줄러 등록까지 된다.
안쓸 이유 없다.
* 관련 사이트
lets Encrypt :https://letsencrypt.org/
* 아래 certbot 을 이용해 설치
위사이트 방문하여 중간쯤 에 자신의 시스템을 선택하면 관련 안내페이지로 이동한다.
여기 예제에서는 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' 경로에 가면 생성되어 있는 디렉토리명이다.
- 기존 등록되어 있던것 + 새로 등록할것까지 모두 ',' 로 나열한다.
끝