Docker LAMP 이미지에 Let’s Encrypt 무료 SSL 인증서 설정 방법

| 2020년 6월 30일 | 0 Comments

오늘은 Docker LAMP 이미지에 Letsencrypt 무료 ssl 인증서 적용 방법에 대해 글을 작성해보겠습니다.

LAMP는 웹사이트나 서버 운영에 자주 같이 쓰이는 다음의 소프트웨어들의 이름을 합한 약자:

위키백과 참고

 

제가 사용한 서버로는 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

Avatar

About the Author ()