1. Apache
(1) Certbot
Certbot 패키지는 Ubuntu내에 존재하지만
Certbot 개발자들이 최신 버전의 Ubuntu 소프트웨어 저장소를 기준으로 꾸준히 제공해주기 때문에
최신 버전의 저장소를 사용할 것이다.
우선 Certbot를 위한 repository(저장소)를 추가한다.
$ sudo apt update
$ sudo apt upgrade
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository universe
$ sudo add-apt-repository ppa:certbot/certbot
Certbot의 패키지를 설치한다.
Apache
$ sudo apt install python2-certbot-apache
Nginx
$ sudo apt install python-certbot-nginx
(2) Certbot 명령어 사용
Apache
$ sudo service apache2 stop
$ sudo certbot certonly --standalone -d huchu-nali.site
$ sudo certbot --nginx -d huchu-nali.site -d www.huchu-nali.site
Nginx
$ sudo vim /etc/nginx/sites-available/default
# server_name huchu-nali.site www.huchu-nali.site
$ sudo nginx -t
$ sudo systemctl reload nginx
$ sudo certbot --nginx -d huchu-nali.site -d www.huchu-nali.site
이후 이메일 주소를 입력하고, 이용약관에 동의하고, 마지막으로 제3자 업체에게 정보를 공유할지 선택하면 발급과정이 진행된다.
http https 강제 리다이렉션 문구는 나온다면 y(2번)를 선택하는 것이 좋다. (nginx 서버로 진행할 때에만 나왔다.)
Congratulations! 문구가 나타나면 발급이 정상적으로 된 것이다.
(3) aws/도메인 설정
SSL이 사용하는 HTTPS에 대한 포트 포워딩이 필요하다.
HTTPS의 포트번호는 443이므로, AWS 보안 설정, 인바운드 규칙 설정으로 들어가서 다음과 같이 443에 대한 포트를 열어준다.
도메인을 구입한 가비아 사이트로 가서, DNS 레코드를 추가,설정해준다.
(4) 웹서버에 반영하기 -> Apache만 진행
/etc/letsencrypt/live/huchu-nali.site
인증서가 생성되면 인증서 파일은 위 경로에 저장된다.
아파치의 설정파일을 편집한다. (설정파일의 경로는 아래와 같다)
/etc/apache2/sites-available/000-default.conf
해당 경로의 파일을 편집해서 VirtualHost를 추가한다.
<VirtualHost *:443>
ServerName huchu-nali.site:443
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/huchu-nali.site/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/huchu-nali.site/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/huchu-nali.site/fullchain.pem
</VirtualHost>
인증경로가 맞는지 검토하면서 진행한다.
만약 인증경로가 맞지 않거나, 443 포트로 연결되지 않으면 위와 같은 오류가 뜨니 주의해야 한다.
$ sudo a2enmod ssl
아파치에 ssl 모듈을 설치한다.
$ sudo systemctl restart apache2
$ //service apache2 start
중지했었던 웹서비스를 다시 시작한다.
(5) 적용된 인증서 확인하기
우선, SSL Lab Server Test로 이동하여 테스트를 해본다.
위처럼 평가가 완료된다면 잘 동작하는 것이다.
"https://도메인주소"로 이동해도 잘 동작하는 것을 확인할 수 있다.
(6) http:// 로 들어올 경우 https:// 로 강제 전환 (force redirect)
Apache
아파치의 설정파일에서 <VirtualHost *:80> 부분에 Rewrite 모듈을 추가해준다.
$ sudo vim /etc/apache2/sites-available/000-default.conf
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
아파치에 rewrite 모듈을 추가하고, 아파치를 재시작한다.
$ sudo a2enmod rewrite
$ sudo systemctl restart apache2
http로 들어가도 https로 갱신되는 것을 확인할 수 있다.
Nginx
$ sudo vim /etc/nginx/sites-available/default
server {
listen 80;
server_name 110.165.18.177
return 301 https://www.huchu-nali.site$request_uri;
}
$ sudo service nginx restart
(7) Certbot 자동 갱신 확인
Let's Encrypt의 인증서는 90일 동안만 유효하므로, 90일마다 갱신시켜줘야 한다.
하지만 설치하는 과정에서 /etc/cron.d에 자동으로 갱신시켜주는 커맨드가 추가되어 있다.
다만, 갱신 프로세스가 잘 동작하는지 테스트를 해보고 싶다면 다음과 같은 명령어를 입력해서
테스트를 진행할 수 있다.
$ sudo certbot renew --dry-run
Apache의 경우 서버가 실행중일 때 코드를 입력하면 아래처럼 80번 포트가 listening 상태여서 발급이 어렵다는 에러가 뜬다.
$ sudo systemctl stop apache2
위 코드로 서버를 잠시 멈추고 실행하면 잘 동작한다.
Apache
$ sudo systemctl start apache2
Nginx
$ sudo systemctl start nginx
서버를 다시 동작시키면 끝이 난다.
luminitworld.tistory.com/85?category=975147
'👩💻 Programming > Infra Engineering' 카테고리의 다른 글
7. 웹서버 Redirection 적용 (IP to Domain) - Apache, Nginx (0) | 2021.03.29 |
---|---|
6. Sub Domain 적용 (Dev, Prod) - Apache2 (0) | 2021.03.29 |
4. AWS 서버 Domain 연결 (0) | 2021.03.29 |
3. Ubuntu 18.04+AWS+Apache2+APM 위 PHPMyAdmin 설치 (0) | 2021.03.29 |
2. AWS EC2 인스턴스 Mysql 서버에 외부 접속하기 (0) | 2021.03.29 |