Nuke Olaf - Log Store
AWS EC2 - apache letsencrypt 사용하여 HTTPS 적용하기 본문
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
참고사이트>>>
https://jootc.com/p/201901062488
'Language > [PHP]' 카테고리의 다른 글
Mixed Content: The page at [frontend-url] was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint [backend-url] (0) | 2020.03.02 |
---|---|
무료도메인 발급 : freenom (0) | 2020.03.02 |
아파치에서 Access-Control-Allow_Origin Header 추가해도 Cors 에러가 뜰때 해결법 (0) | 2020.03.02 |
무료 도메인 발급받기 - coo.kr (0) | 2020.03.01 |
AWS - EC2 와 PHPStorm 연결하기 (0) | 2020.02.25 |