ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Docker Portainer Let's Encrypt SSL 인증서 적용하기
    버그 & 오류 잡기 2020. 11. 21. 21:48

    무료 SSL 인증서 Let's Encrypt

    최근에 도커에 관심을 가지게 되면서 거의 필수 관리 프로그램으로 불리는 Portainer라는 소프트웨어를 이용하게 되었습니다. 도커로 아주 쉽게 설치할 수 있고, 괜찮은 Web UI로 도커에서 돌아가는 프로그램들을 관리하기 매우 편한 소프트웨어입니다.

     

    처음에는 default값으로 있는 포트 9000으로 두고 사용하고 있었는데 갑자기 이 주소가 HTTP인게 보이더군요. 아무래도 Portainer는 중요한 데이터를 다루는 프로그램이고 (해커들이 접속해서 컨테이너들을 지워 버릴 수도 있으니..) Portainer 문서에서도 SSL 인증서를 권장한다고 되어있었습니다.

     

    그리고 YML 형식의 파일을 읽어 도커를 세팅하는 docker-composer를 최근에 사용하여 설치할 때가 편할때도 있어서 이번에는 오직 docker-composer만을 이용하여 Let's Encrypt 인증서를 적용해보도록 하겠습니다. 개인적으로 Nginx 리버스 프록시 방법을 사용하는 것이 너무 어렵더라고요. 특히나 nginx.conf 같은 설정 파일 형식이 인터넷에서 설명하는 방식들이랑 너무나 다 달라서 계속 파일이 꼬이기도 하고요.

     

    우선 준비물 아래와 같습니다.

    • HTTP로 접속이 가능한 Portainer 상태
    • 사용할 도메인으로 발급된 Let's Encrypt 인증서 (/etc/letsencrypt/ 폴더에 있는...)

    두 가지 준비물이 다 준비되셨다면 아래 명령어를 입력하여 도커를 정지시킵니다.

    sudo docker-compose down -v

    그리고 아래 명령어로 docker-composer YML 파일을 수정해봅시다.

    nano docker-compose.yml

     

    <도메인>이라고 표시된 부분을 여러분들의 도메인으로 변경해주세요.

    version: '3'
    
    services:
      portainer:
        image: portainer/portainer-ce:alpine
        container_name: portainer
        restart: always
        ports:
          - 9000:9000
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock
          - /docker/portainer/portainer_data:/data
          - /etc/letsencrypt/live/<도메인>:/certs/live/<도메인>:ro
          - /etc/letsencrypt/archive/<도메인>:/certs/archive/<도메인>:ro
        command:
          --ssl
          --sslcert /certs/live/<도메인>/cert.pem
          --sslkey  /certs/live/<도메인>/privkey.pem
    
    volumes:
      portainer_data:

    만약 포트를 바꾸고 싶으면 ports의 앞부분을 변경하시면 됩니다. 그리고 경로 문제가 가장 많이 발생하니 혹시나 본인의 경로가 다르다면 그 부분을 수정해주셔야 합니다. 그러나 기본 Let's Encrypt 인증서는 저곳에 설치가 됩니다.

    최근에는 Wildcard를 이용해서 발급하는 것이 편하더군요.

     

    그리고 아래 명령어로 다시 도커를 재실행합니다.

    sudo docker-compose up -d

     

    그리고 이번에는 https://본인 도메인.***으로 접속하면 SSL 인증서가 설치되어있음을 확인하실 수 있습니다.

     

    크롬에서는 쿠키를 한번 지우고 실행하는 것을 추천합니다. 가끔 남아있는 쿠키 때문에 그대로 HTTP로 접속되는 경우가 있습니다. 반드시 앞에 HTTPS 인지 확인해보시고 접속하셔야 합니다. HTTP에서 강제로 HTTPS로 리다이렉트 방법도 있는데 다음 포스팅에 한번 소개해보겠습니다.

     

    궁금하신 점이나 잘 안되시는 것이 있으면 댓글로 달아주시면 최대한 빠르게 답변드리겠습니다.

    댓글 0

Designed by Tistory.