송민준의 개발노트

SSL 적용해보기(ubuntu) 본문

AWS

SSL 적용해보기(ubuntu)

송민준 2019. 12. 23. 21:10

1. root에서 명령어 시작한다.

sudo su

2. letsencrypt 설치한다.(우분투 16.04 이후 버전 - 난 18.04)

# apt-get install letsencrypt

3. 도메인이 있어야한다. 등록해보자(AWS Route 53)

----------------------------------도메인 등록-----------------------------------------

1. AWS Route 53으로 가서 하고싶은 도메인 이름을 입력후 확인해보면 가능여부를 알려준다.

2. 도메인에 대한 연락처 세부정보 등록

3. 관련 정보 입력하고 이메일 인증후 제출하면 다음과 같이 뜬다.

4. 대시보드에 확인해보면 등록 진행중인걸 확인할 수 있다.

5. 등록 완료(1~2시간 걸린듯)

6. 도메인과 EC2인스턴스(EIP적용)를 연결해보자 우선 호스팅 영역으로

 

7. 레코드 세트 생성 = > 이름에 www입력, 값에 탄력적IP 입력 후 레코드 세트 저장 후 테이블에 떴는지 확인

 

8. 도메인 등록은 끝났는데 내가 원하는 경로인 www.portfordev.com/   으로는 안들어가진다...

    http://www.portfordev.com:8080/mysite/ 

으로 들어가야 들어가지는데 바꿀려면 찾아보니 포트포워딩을 해야 한다고 한다. 방법을 찾아보니 우분투에 아파치를 설치해서 프록시 웹서버를 구축하면 된다고 한다.

 

------------------------------------도메인 등록 끝------------------------------------------------

------------------------------------아파치 설치 및 구성 ------------------------------------

1. 우선 환경셋팅부터 가자 아래 명령을 입력해서 서울 시간을 맞춰주자.(Asia-Seoul) 

 

2. Hostname 설정해주기 

vi /etc/hostname

이런게 나온다

원하는 이름(통상 도메인이름)으로 설정 후  esc -> :wq 입력 후 엔터, su reboot 입력 후 재실행

3. 아파치 설치(루트 기준)

# apt install apache2

4. 80포트를 톰캣 8080포트로 리다이렉트 하도록 방화벽 설정

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

5. 설정 저장 및 방화벽 적용

service iptables save
service iptables reload

* service iptables save를 하는데 

이런식으로 나오는 경우가 있다.

나는 아래처럼 입력하여 해결함 넘나 힘든것;

iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 8080 -j ACCEPT
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

-----------------------------------아파치 설치 및 구성  끝 ------------------------------------

4. 도메인 연결이 끝났다면 본격적으로 SSL 적용을 해보자

  우선 AWS Certificate Manager로 가자

5. 인증서 프로비저닝

6. 인증서 요청

7. 등록했던 도메인 이름을 추가해주자

8.  검증 방법 선택(DNS검증)

8. 태그 추가는 생략했다. 확인 및 요청 클릭

9. Route 53에서 레코드 생성을 해봤다.

10. 30분 정도 지나면 발급이 된다.(DNS 검증 개꿀)

11. EC2 에 있느느 로드 밸런싱 - 로드밸런서로 가자. 생성 클릭

12. classic 생성 클릭

13. 로드 밸런서 정의에서 아래 2가지만 해주면 된다. 다음

14. 보안 그룹 할당은

 전에 만들었던 기존 보안그룹선택해주자(나는 디폴트랑 2개 했음)

15. 보안 설정 구성에선

  ACM에서 인증서 선택(권장) 클릭하고 다음으로 넘어가자

16. 상태 검사 구성 패스

17. EC2 인스턴스 추가에선 반영할 인스턴스를 클릭하고 다음 이동

18. 태그 추가는 생략하고 검토 및 생성을 한다. 그럼 로드 밸런서가 생긴걸 알 수 있다.

19. Route53으로 이동해서 호스팅 영역에 레코드 세트를 생성해주자

     이름은 그냥 두고 별칭 설정해서 아까 만들었던 별칭 대상을 설정해주자

20. 케이스마다 다르긴 한데 나는 30분 정도 기다렸다.

    접속하면 SSL이 인증된 것을 볼 수 있다.

  * 다만 www 없이 접근을 할 경우 SSL이 적용이 안되는 문제가 있긴 한데 차차 해결해보겠다.

 

----------------www 없이 접근 경우 해결 ---------------------------

1. 원인은 루트 도메인과 서브 도메인을 고려하지 않고 인증서를 발급 받은 것이었다.

 최초 AWS에서 인증서로 보호하고 싶은 도메인 이름을 추가할 때 *.portfordev.com 으로 신청하였는데 이는 서브 도메인으로 루트도메인과는 엄연히 다른 도메인이다.  그러므로 최초 발급을 받았던 인증서는 삭제하고 2개를 추가해서 새로 발급 받아야 한다. 

 

우선 인증서 기존 것을 삭제하고 새로 발급 받는다.

2. 로드 밸런스를 새로 받은 인증서를 적용해서 생성한다.

3. route 53 호스팅 영역에서 위 도메인으로 새로 만들어준다.

4. 로드밸런스에서 http로 접근해주는 것을 https로 이동하게 리다이렉션으로 바꿔준다.

 

위 방법들은 AWS 게시물에 있다.