Apache2로 Http, Https 웹 서버 구성하기

2019. 7. 1. 23:00Linux Tips

안녕하세요! ChairSitMan17입니다.

정말 오랜만이네요~

 

방학을 맞고 아주 유익한 하루하루를 보내다가

블로그가 마침 생각나서

고등학생때 질리도록 했던 Apache2 서비스를 다루는 법을 간단히 업로드하면 어떨까해서..ㅎㅎ

 

 

그래서 간단하고 쉽게 끝낼 수 있는

Apache2 웹서버 구축하기 ( Http, Https )

를 준비해왔습니다!

 

먼저 Apache2를 구성하려면 리눅스 호스트가 필요합니다!

그래서 저는 가상머신을 통해 구성하려고 하는데요!

 

마침 VMware Workstation에 Debian 9.8 버전을 설치해놔서

클론해서 작업을!!!!

 

...하려고 했으나

...

Apache2를 설치하려고 명령을 입력했지만

뱉어버립니다...

 

이유는 apt 소스가 블루레이 디스크 이미지로 되어있던것!!!!

사실 Debian 가상머신을 만들때 블루레이 디스크로 설치했었거등요 ㅎㅎ

그래서 패키지도 블루레이 디스크에서 불러와야해요.

 

어?? 그럼 블루레이 설치 이미지를 다시 불러오면 해결할 수 있잖아요??

 

...라고 생각하시겠지만

최근 하드디스크를 포맷해서

모든 이미지 파일을 잃어버렸죠..ㅎㅎ

 

좋아요. 그럼 apt소스를 한국에 있는 서버로 설정하면 되잖아요??!

 

...라고 생각하시는 분들도 계시겠지만

.

.

.

그 몇줄만 적으면 되는걸 가지고

극도의 귀차니즘으로

과감하게

가상머신을 종료합니다.

삭제는 서비스 ^^

그리고 조심스럽게

WSL Ubuntu를 켭니다. 

 

 

그래서 이번 팁은

WSL ( 리눅스용 Windows 하위 시스템 ) 에서 진행하도록 하겠습니다 :D

 

위 사진과 같이 WSL을 관리자 권한으로 실행합니다.

 

그리고 Apache2 서비스를 설치해줍니다.

 

user@hostname:~$ sudo apt-get install apache2

여기서 한 가지 팁을 드리자면

sudo명령을 일일이 입력하기 번거롭다면

처음부터 sudo -i 명령으로 root쉘을 불러오시면

훨씬 편하게 작업하실 수 있습니다 ^^

 

설치하셨다면!

WSL특성상 Apache2 서비스가 설치하는 즉시 올라오지 않는 경우가 있습니다.

 

그럴땐 서비스를 재시작해줍니다.

root@hostname:~# service apache2 restart

그럼 위와 같이 방화벽 경고창이 나타납니다.

엑세스 허용에 사뿐히 마우스를 클릭해줍니다.

 

그럼! 끝!

웹 서버를 하나 구축하셨습니다!!

 

브라우저에서 접속해보겠습니다!

http://localhost

http://localhost로 접속하시면!!

Apache2 기본 웹 사이트가 나타나게 됩니다!

 

여기서 localhost가 잘 뭔지 모르신다면

인터넷에서 알아보시면 잘 나와요 ^-^

 

It Works!

 

별로 어렵지 않습니다. ㅎㅎ

설치만하면 구축되는 웹 서버이니...

 

그럼 좀 더 심화해서

Https 보안연결을 구성해보도록 하겠습니다!

 

Https보안연결에 제일 필요한건

인증서 ( Base64로 인코딩된 .crt 또는 .cer  ) , 개인키 ( .key ) 입니다!

 

실무에서는 let's Encrypt 서비스를 통해 보안연결에 필요한 인증서를 받아올 수 있지만

간단히 연습하는 연습용 서버이기 때문에

OpenSSL로 자가서명을 통해 인증서와 개인키를 발급받아 보겠습니다.

 

먼저 요청서를 생성합니다.

여기서 제일 중요한건 Common Name입니다.

웹 서버 도메인이랑 일치되지 않으면 브라우저에서 보안 오류가 발생하기 때문에

신경을 써주셔야 합니다 ^-^

 

위 명령을 잘 실행하셨다면

localhost.req 요청서와 개인키 localhost.key가 생성되었습니다.

 

그럼 요청서를 서명해서 인증서로 만들어야 하지만

인증기관을 구성하고 서명하면 더 복잡하기 때문에

 

자가서명을 통해 구성하도록 하겠습니다.

아래 명령을 실행해서 요청서를 자가서명합니다.

정상적으로 실행되셨다면

localhost.crt와 localhost.key가 생성되었습니다.

 

그럼 apache2 서비스가 인증서와 개인키를 불러올 수 있도록

mv 명령어로 이동시켜 줍니다.

 

저는 /certs 디렉터리를 임의로 생성하여 파일들을 이동하였습니다.

 

그럼 이제 https 서버 구성에 필요한 모든 조건들을 구성했으니

웹 서버 구성으로 넘어가겠습니다.

 

root@hostname:~# vi /etc/apache2/sites-available/default-ssl.conf

위와 같이 작업을 합니다.

기본 웹 서버 구성을 수정하면 되지만

저는 왠지 별도로 만들어놓는게 좋아여...

 

저장하고 나가서

apache2의 모듈을 아래와 같이 활성화 시킵니다.

재시작도 함께 수행해줍니다.

 

그럼 이제 끝났습니다.

이제 브라우저에서 접속을 해봅니다.

 

인증서에서 서명한 인증기관을 컴퓨터에서 신뢰하지 못할때 나타나는 오류입니다!

Chrome 브라우저에서는 고급 버튼을 눌러서 안전하지 않은 웹 페이지로 이동할 수 있지만

 

그래도 이왕 연습하는거 컴퓨터에 신뢰시켜서 접속하는게 좋겠죠??

WSL에서 재주껏 인증서를 복사해서

mmc에 '신뢰할 수 있는 루트 인증 기관'에 넣어줍니다.

 

그럼 이제 다시 접속해볼까요??

Chrome 브라우저에서는 Common Name 뿐만 아니라 주체 대체 이름로 추가로 인증서에 새겨줘야 하군요!

다른 도메인으로 하면 모를까.. localhost를 도메인으로 연습해서

위와 같이 오류가 나오는것 같습니다..

 

음~

 

Chrome은 까다롭네요. 그래서 더 좋은걸요 ㅎㅎ

SAN ( 주체 대체 이름 )까지 OpenSSL에 구성하려면 더 복잡해지니

구성하시고 싶으신 분들은 아래 링크 남겨두겠습니다.

참고하셔서 더 알아보세요~

참고 : https://onlinehelp.tableau.com/current/server/ko-kr/ssl_cert_create.htm

 

예: SSL 인증서 - 키 및 CSR 생성 - Tableau

Windows 기반 Tableau Server는 이제 구성 유틸리티 및 tabadmin 명령줄 도구를 대체하는 TSM(Tableau 서비스 관리자)을 포함합니다. 이전 버전의 Tableau Server에 대한 도움말이 필요한 경우 Tableau 도움말 페이지를 참조하십시오. 중요: 이 예제는 SSL 요구 사항 및 구성에 대해 잘 알고 있는 IT 전문가에게 일반적인 지침을 제공하기 위한 것입니다. 이 문서에 설명되어 있는 절차는 필요한 파일을 생성하기 위해

onlinehelp.tableau.com

그럼 이대로 실패인가요..ㅠㅠ

아니요!!!!

 

보안이 허술하기 짝이없는

Internet Explorer를 사용하거나

 

마이크로소프트에서 최신이라고 자부하지만

망해버린 내장 브라우저

Microsoft Edge를 사용하면 됩니다!

 

불쌍한 마이크로소프트..

 

Microsoft Edge로 열어볼까요??

Https로 성공적으로 접속됨을 확인할 수 있습니다!!

 

여기까지가 Https 웹 서버 구성 방법입니다!!

 

조금 복잡해 보이지만

알고보면 정말 쉬워요!

 

..사실 이정도는 맛보기죠ㅎㅎ

웹서버 구성에서 제일 머리아픈건 apache2 모듈이라고 생각합니다ㅎㅎ

mod_security도 있고 mod_rewrite에...

생각만해도 건들이기 싫네요 ㅎㅎ

 

그래도 자나깨나 보안을 중요하게 여기는 요즘 시대에

조금이라도 더 배워서 안전하게 사용자들에게 서비스해주면

방문자들이 더 늘어나지 않을까요..ㅎㅎ

( 그럴리가 )

 

많은 도움이 되셨으면 좋겠습니다!