우분투(Ubuntu) 아파치(Apache) 서버 SSL 구성 방법

최근 모바일 서비스를 준비하면서 한국의 클라우드 플랫폼 제공사들의 서비스도 파악해볼겸 KT의 비지니스 클라우드 서비스를 사용하기로 결정을 했습니다. 가상화 기술을 백엔드로 아마존의 AWS와 비슷하게 제공하는데, 아직 갈 길은 멀어보이지만 서비스 컨셉은 제대로 잡고 시작하는 것 같아 믿음은 가더군요.

이번 글은 클라우드 얘기가 아니고, 우분투 11.04 서버에서 아파치 설정 후 SSL을 구성하는 방법입니다. 예전에 레드햇 계열에서는 많이 했었는데 아주 오랜만에 해보니 여러 시행착오를 겪게 되더군요. 참고용으로 포스팅합니다.

https 보안 웹 통신을 위해서는 인증서를 구입해야 하지만, 모바일 앱에서만 서비스를 제공할 것이기 때문에 그냥 자가 서명 인증서(self signed certification)를 이용해서 마무리했습니다. (불특정 웹 방문자를 위한 권위 있는 인증서가 필요하지 않다는 의미입니다.) 이렇게 하면 웹브라우저로 방문을 하면 인증서를 확인할 수 없다는 경고 메세지가 나오지만, 배포하는 모바일 앱 개발 시에 저 부분을 우회하도록 설정해두면 원하는 보안 통신을 할 수 있겠죠. (이 방법도 나중에 공유를 해볼 생각입니다.)

인증서 확인 불가능 경고 메세지

제가 원하는 것은 http가 아닌 https를 이용함으로써 불순한 의도로 패킷 캡쳐 등을 통해 서비스를 방해하는 것을 원천적으로 막기 위함입니다. ^^ 자 그럼 우분투 서버에서 아파치의  SSL 통신을 설정하는 방법을 알아보도록 하죠.

모두 root 권한으로 실행한 내용입니다. root가 아니라면 sudo로 권한을 획득한 후 진행하시면 됩니다. 각 명령어는 man을 이용해 내용을 보시면 바로 이해할 수 있습니다. 공부도 되겠죠? ^^

  1. openssl genrsa -out server.key 1024
  2. openssl req -new -key server.key -out server.csr
  3. openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
  4. cp server.crt /etc/ssl/certs
  5. cp server.key /etc/ssl/private
  6. a2enmod ssl
  7. /etc/apache2/ports.conf 파일 수정

    <IfModule mod_ssl.c>
        Listen 443
    </IfModule>
  8. /etc/apache2/sites-available/default-ssl 파일에 아래 내용 추가

    SSLEngine on
    SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
    SSLCertificateFile /etc/ssl/certs/server.crt
    SSLCertificateKeyFile /etc/ssl/private/server.key
  9. a2ensite default-ssl
  10. service apache2 reload
그 후 브라우저에서 https로 해당 사이트를 접속해보시면 됩니다. 

댓글 없음: