불친절한 블로그

[WebServer][AWS] SSL 설정하기 (https 설정하기) 본문

Project/공항 PCR 확인서

[WebServer][AWS] SSL 설정하기 (https 설정하기)

오누! 2021. 5. 4. 17:06
반응형

 

서버는 AWS EC2를 사용

프로젝트는 spring boot를 사용한 프로젝트

도메인과 SSL 인증서는 호스팅케이알에서 구입

 

이전 글에서 spring boot와 apache를 연동하는 글을 올렸다.

onu0624.tistory.com/73

 

[AWS] EC2 spring boot + apache + tomcat (내장) 연동(mod_jk)

기존에 spring boot로 만들어진 프로젝트를 EC2에 인스턴스를 생성해서 서버구축을 할 것이다. 그 후 spring boot 내장 tomcat과 EC2에 apache를 설치해서 이 두개를 mod_jk로 연동 할 것이다. 먼저 EC2 인스턴

onu0624.tistory.com

 

도메인 또한 연결을 했다.

onu0624.tistory.com/76

 

[WebServer] Domain 설정하기

프로젝트를 진행하면서 웹페이지를 웹서버에 띄우고, 외부에서 IP로 사이트에 접근하는게 가능했다. 이제 도메인을 설정해줘서 우리들이 평소에 사이트에 접속할 때, 익숙한 환경을 만들어 주

onu0624.tistory.com

 

구입한 SSL 인증서를 적용해서 http가 아닌 https로 웹페이지를 사용하려고 한다.

 

우선 mod_ssl을 설치해야 한다.

$ sudo yum install mod_ssl

 

httpd.conf에 캡처와 같이 내용을 가장 하단에 추가해준다.

작성자의 경우 httpd.conf는 /etc/httpd/conf/ 경로에 이전 게시글에서 작성해주었다.

 

위에서 include 해준 httpd-ssl.conf 파일을 만들어준다.

 

httpd-ssl.conf 파일의 내용은 캡처의 내용을 채워준다.

하단에 SSL관련은 구입한 인증서를 파일로 받게 되면 그 파일을 서버에 넣어주고 그 경로를 지정해주면 된다.

 

작성이 완료되면 아파치를 재시작 해준다.

$ sudo apachectl restart

 

아파치가 재시작 되지 않았다.

하단의 내용을 보니 인증서 패스워드 관련되서 문제가 생긴 것 같다.

구매한 인증서에 파일들 중에 메모장 파일로 받은 패스워드 파일이 있었다.

이걸 어떻게 적용하는지 구글링 해봤다.

 

SSLPassPhraseDialog 관련 내용이 들어가 있는 곳에 패스워드를 넣어주어야 한다.

검색해보니 작성자의 경우 /usr/libexec/ 경로에 httpd-ssl-pass-dialog 파일이 존재한다.

파일을 열어보면 exec가 주석이 풀려있고, echo가 없다.

exec에 주석을 걸어주고, echo를 추가해주고 문자열 값에 인증서에서 받은 패스워드를 넣어준다.

 

그 후 아파치를 재시작해준다.

$ sudo apachectl restart

 

도메인으로 접속해봤더니 아파치 초기 페이지가 뜬다...

페이지에서 f12 관리자 창으로 봤더니 403 에러가 떴다....

 

httpd.conf 파일에 내용을 수정하라는 피드백 해봤지만 안됐다.

<Directory />

    AllowOverride None

    Require all granted (denied를 granted로 수정)

</Directory>

 

/www/html/ 폴더 권한을 755로 변경해라

httpd.conf <Directory> 권한 설정해라

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny, allow
    Allow from all
</Directory>

 

httpd-ssl.conf 파일에 SSLStrictSNIVHostCheck on 옵션 추가해라

프로젝트 코드에서 http 들어가는 내용 https로 변경해라

 

다 해봤지만 페이지는 연결되지 않았다.

 


아파치 연동 문서를 다시 차근히 보았다.

mod_jk를 사용하여 아파치를 연동했기 때문에

그때 만들어진 문서에서 빠진 내용이 있을거라 유추했다.

 

네개의 문서를 다시 확인했다.

1. httpd.conf

2. mod_jk.conf

3. worker.properties

4. http_vhost.conf

 

worker.properties 에서 가상 포트로 지정하고 지정된 worker(톰캣)을

http_vhost.conf에서 JkMount 시켜줬다.

즉, 제작한 페이지가 뜨기 위해서는 톰캣에 띄운 것이 연동이 되야하기 때문에

JkMount를 https에도 적용해줘야 한다....

 

JkMount 해주지 않았기 때문에 https(443포트)는 아파치와 톰캣이 연결되어 있지 않은 상태이기 때문에

계속해서 아파치 index페이지가 뜨는 것이다. ㅠㅠ

 

그렇기 때문에 내가 만들어준 worker2를 연결해주면 된다.

 

worker.properties (참고)
http_vhost.conf (참고)

 

이제 브라우저에 도메인을 입력하고 https가 적용되었는지 확인!!

에러가 발생했을 때, 당연히 에러 메세지 구글링해서 문제를 해결하려고 했지만

해당 에러 메세지가 모두 똑같은 상황에서 발생하는 것은 아니였다.

다른 상황이더라도 같은 에러 메세지를 뱉을 수 있고,

에러 메세지를 구글링 할 때도 좀 더 구체적으로 검색을 해야 했고,

단순히 에러만 해결하려는게 아니라 정상동작하기까지 흐름을 시뮬레이션 해보는 훈련이 필요한 것 같다.

반응형
Comments