Nuke Olaf - Log Store

AWS EC2 - apache letsencrypt 사용하여 HTTPS 적용하기 본문

Language/[PHP]

AWS EC2 - apache letsencrypt 사용하여 HTTPS 적용하기

NukeOlaf 2020. 3. 2. 05:21

1. Name Server 를 지원하는 도메인 주소 얻기

freenom 이라는 사이트에서 도메인 주소를 얻었다. 

freenom 주소 : https://my.freenom.com

* freenom 으로 무료 도메인 등록하는 방법은 아래 링크 참고
- 생활코딩 : https://opentutorials.org/course/3276/20311
- 로그인 오류 참고 : https://j-history.tistory.com/9

 

2. AWS Route53 Console 에 접속

https://console.aws.amazon.com/route53/home

호스팅 영역탭에서 [호스팅 영역 생성] 버튼을 누르고
freenom 에서 등록했던 도메인 이름을 입력한 다음, 생성 버튼을 누른다.

유형은 default 값인 퍼블릭 호스팅 영역으로 유지한다.

 

 

 

그 다음, 생성한 호스트존을 클릭하고 [레코드 세트로 이동] 버튼을 누른다.

처음에는 NS 와 SOA 유형의 레코드만 있을것이다.
NS 레코드를 클릭하면 Value 에 네임서버 리스트가 보인다.

 

 

 

위의 네임서버 리스트들을 freenom 에서 만든 도메인에 등록해주어야 한다.

freenom 의 Services > My Domains 로 들어간다.
Manage Domain 으로 이동한다.

 

 

그 다음 Management Tools > Nameservers 로 이동하여
방금 AWS Router 53 에서 확인한 네임서버 리스트들을 입력해준다.

 

 

 

다시 AWS 의 Route 53 콘솔 창으로 돌아가서,
A 레코드를 생성하기 위해 [레코드 세트 생성] 버튼을 클릭한다.

  • 이름(Name) : 서브 도메인 네임을 입력한다. Root 도메인을 사용할 경우에는 비워둔다.
  • 유형(Type) : A 레코드를 선택하기 위해 'A - IPv4 주소' 를 선택한다.
  • 별칭(Alias) : '아니오'를 선택
  • TTL : 도메인 이름의 caching 시간 설정. 기본 값을 사용한다.
  • 값(Value) : 여기에 Elastic IP (고정 IP) 를 입력한다. 

 

 

 

3. Ubuntu - certbot 설치
(apt update 와 apt upgrade 를 시킨다음 진행)

아래 명령어로 certbot 을 설치해준다

$ apt install certbot

설치한 후, letsencrypt 버전을 확인한다.

$ letsencrypt --version

 

 

0.27.0 버전이 설치되었다.

apache 에 맞는 package 를 설치해준다

$ apt install python3-certbot-apache

 

4. Certbot 을 사용하여 인증서 생성하기

* 참고 사이트 : https://jootc.com/p/201901062488

먼저, 구동중인 apache2 웹서버를 잠시 중지시킨다.

$ service apache2 stop

Standalone 방식으로 인증서를 발급한다

$ certbot certonly --standalone -d nukeolaf.ga

 

 

도메인 관리자의 이메일 주소를 입력해준다. (갱신알림이나 주요한 소식들이 발송된다)

이용원칙 동의 -> A 입력후 엔터
제 3자 업체 정보 공유 -> N 입력 후 엔터

 

 

Congratulations! 문구가 나타나면 발급이 정상적으로 완료된 것이다.

 

5. 인증서 파일을 웹 서비스에 반영

인증서가 생성되면 인증서 파일은 아래 경로에 저장된다.

/etc/letsencrypt/live/nukeolaf.ga

 

 

 

아파치의 설정파일을 편집한다. (설정파일의 경로는 아래와 같다)

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

 

443 포트로 들어왔을때의 가상호스트 코드를 추가한다.

<VirtualHost *:443>
        ServerName nukeolaf.ga

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/olaf-front

        <Directory /var/www/olaf-front>
             Options FollowSymLinks
             Allow from all
             AllowOverride all
             Require all granted
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        SSLEngine on
        SSLCertificateFile /etc/letsencrypt/live/nukeolaf.ga/cert.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/nukeolaf.ga/privkey.pem
        SSLCertificateChainFile /etc/letsencrypt/live/nukeolaf.ga/fullchain.pem
</VirtualHost>

 

위의 코드를 추가한 전체 설정은 아래와 같다.

<VirtualHost *:80>
        ServerName nukeolaf.ga

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/olaf-front
        
        <Directory /var/www/olaf-front>
             Options FollowSymLinks
             Allow from all
             AllowOverride all
             Require all granted
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

<VirtualHost *:443>
        ServerName nukeolaf.ga

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/olaf-front

        <Directory /var/www/olaf-front>
             Options FollowSymLinks
             Allow from all
             AllowOverride all
             Require all granted
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        SSLEngine on
        SSLCertificateFile /etc/letsencrypt/live/nukeolaf.ga/cert.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/nukeolaf.ga/privkey.pem
        SSLCertificateChainFile /etc/letsencrypt/live/nukeolaf.ga/fullchain.pem
</VirtualHost>

<VirtualHost *:7777>
        DocumentRoot /var/www/olaf-back

        <Directory /var/www/olaf-back>
             Options FollowSymLinks
             Allow from all
             AllowOverride all
             Require all granted
             Header set Access-Control-Allow-Origin "*"
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error-back.log
        CustomLog ${APACHE_LOG_DIR}/access-back.log combined
</VirtualHost>

 

아파치에 ssl 모듈을 추가하고, 아파치를 재시작한다.

$ a2enmod ssl
$ systemctl restart apache2

 

6. http:// 로 들어올 경우 https:// 로 강제 전환 (force redirect)

https://sarc.io/index.php/httpd/1120-apache-https-http-redirect-rewrite

https://www.lesstif.com/pages/viewpage.action?pageId=6291722

아파치의 설정파일에서 <VirtualHost *:80> 부분에 Rewrite 모듈을 추가해준다.

/etc/apache2/sites-available/000-default.conf
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

위의 코드를 추가하면 아래와 같다.

<VirtualHost *:80>
        ServerName nukeolaf.ga

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/olaf-front
        
        <Directory /var/www/olaf-front>
             Options FollowSymLinks
             Allow from all
             AllowOverride all
             Require all granted
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        RewriteEngine On
        RewriteCond %{HTTPS} off
        RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>

<VirtualHost *:443>
        ServerName nukeolaf.ga

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/olaf-front

        <Directory /var/www/olaf-front>
             Options FollowSymLinks
             Allow from all
             AllowOverride all
             Require all granted
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        SSLEngine on
        SSLCertificateFile /etc/letsencrypt/live/nukeolaf.ga/cert.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/nukeolaf.ga/privkey.pem
        SSLCertificateChainFile /etc/letsencrypt/live/nukeolaf.ga/fullchain.pem
</VirtualHost>

 

아파치에 rewrite 모듈을 추가하고, 아파치를 재시작한다.

$ a2enmod rewrite
$ systemctl restart apache2

 

참고사이트>>>

http://makebct.net/aws-%EC%99%B8%EB%B6%80-%EB%8F%84%EB%A9%94%EC%9D%B8-%EC%97%B0%EA%B2%B0-%EB%B0%A9%EB%B2%95-1/?cat=989/

https://jootc.com/p/201901062488

https://blog.lael.be/post/5107

https://freecatz.tistory.com/94

Comments