Docker LAMP 이미지에 Let’s Encrypt 무료 SSL 인증서 설정 방법
오늘은 Docker LAMP 이미지에 Letsencrypt 무료 ssl 인증서 적용 방법에 대해 글을 작성해보겠습니다.
LAMP는 웹사이트나 서버 운영에 자주 같이 쓰이는 다음의 소프트웨어들의 이름을 합한 약자:
- Linux (리눅스 운영체제);
- Apache (아파치 웹 서버);
- MySQL / MariaDB 데이터베이스 관리 시스템(데이터베이스 서버);
- PHP, Perl, 또는 Python 프로그래밍 언어
위키백과 참고
제가 사용한 서버로는 iwinv 가상서버 (OS : CentOS 7.x + Docker) 입니다.
Docker가 이미 설치되어 있는 OS 버전으로 생략하겠습니다.
Docker를 이용한 LAMP 구축에는 여러 방법이 있겠지만 저는 OS image (linux)+apm 이미지로 테스트를 진행하였습니다.
지난 nginx이미지 ssl 적용은 로컬에서 letsencrypt를 사용했지만 이번에는 letsencrypt 또한 ubuntu 이미지에서 진행하겠습니다.
[root@DOCKER_APM_SSL ~]# docker search lamp // lamp 이미지 검색
[root@DOCKER_APM_SSL ~]# docker pull mattrayner/lamp // 여러 이미지 중 mattrayner/lamp 이미지 다운로드
[root@DOCKER_APM_SSL ~]# docker image ls // 다운로드 받은 이미지 출력
[root@DOCKER_APM_SSL ~]# docker run –name lamp_ssl -it -d -p 80:80 -p 443:443 -v /home/coldhappiness:/home/coldhappiness mattrayner/lamp
//위의 명령어로 컨테이너를 생성해줍니다.
// 로컬에서 80번 포트, 443 포트는 쓰지않고 Docker로만 웹을 띄우기위해 동일한 포트로 포워딩해줍니다.
//-v 옵션으로 디렉토리를 지정하게 되는 데 이번엔 홈 소스를 옮기기 위해 -v옵션을 사용합니다.
해당 명령어로 run을 시킨다음 로컬에서 netstat -nltp를 했을때 확인할 수 있습니다.
하지만 지금 상태는 lamp 이미지에서 apache2 vhost 및 ssl 설정도 하지않았기 때문에 도커 ubuntu 이미지 안에서는 80, 443포트가 작동하지 않는 상태입니다.
[root@DOCKER_APM_SSL ~]# docker exec -it lamp_ssl /bin/bash
// 외부에서 컨테이너에 특정 명령을 줄 수 있습니다.
// 위의 사진은 Docker 컨테이너 안의 APM 정보입니다.
// 버전 확인 또한 컨테이너 안에서 입력합니다.
// php의 경우 여러가지 버전이 설치되어 있으며 홈페이지 구축에 따라 버전을 달리 사용하시면 될 것 같습니다.
다음은 docker 컨테이너 안에서 letsencrypt를 설치하는 방법입니다.
root@aff403a56323:# apt-get install git
root@aff403a56323:# cd /usr/local/src
root@aff403a56323:# mv letsencrypt/ /usr/local/
root@aff403a56323:# git clone https://github.com/letsencrypt/letsencrypt
letsencrypt 인증서 설치 및 적용
root@aff403a56323:# cd /usr/local/letsencrypt
root@aff403a56323:/usr/local/letsencrypt# ./letsencrypt-auto certonly -a webroot –agree-tos -m nara5211@smileserv.com [메일주소] -w /home/coldhappiness [DocumentRoot] -d coldhappiness.me [도메인] -d ssl.coldhappiness.me [서브 도메인 2] –rsa-key-size 4096
이러한 에러가 발생한다면 아래의 방법으로 해결해보시기 바랍니다.
root@aff403a56323:# cd /home/coldhappiness (DocumentRoot로 경로 이동)
root@aff403a56323:# mkdir -p .well_known/acme-challenge (DocumentRoot 하위에 .well_known/acme-challenge 디렉토리 생성)
다시 인증서 생성 명령어를 통해 생성하면 아래와 같이 인증서 생성에 성공 메세지를 확인할 수 있습니다.
다음은 apache2 설정 부분입니다.
root@aff403a56323: a2enmod ssl
//ssl 사용을 하겠다고 명시
apache2 ssl.conf 수정
root@aff403a56323: a2ensite coldhappiness.me
root@aff403a56323: service apache2 restart
root@aff403a56323: netstat -nltp
감사합니다.
Category: LINUX