TrueNAS Core에서 발급한 인증서 플러그인에서 사용하기

병신·2023년 1월 18일
0

개요

이전에 발급한 ssl 인증서는 freenas-deploy.py에 의해 smb, ftp, webui등 각종 서비스에 자동 배포되었습니다. 하지만 플러그인에서는 인증서를 사용하기 위해 별도로 작업이 필요합니다. 리버스 프록시용 jail을 추가적으로 만들어 각 플러그인에 매핑해주는 방법이 트루나스 포럼에서 선호되는 방법이지만 추후에 적기로 하고 각 플러그인에 수동으로 인증서를 설치하는 요령을 정리합니다.

방법

먼저 기존 이전에 .acme.sh로 발급한 인증서로 사전작업을 하겠습니다. 루트폴더에 자기 도메인의 이름으로된 폴더를 만들고 웹서버에서 사용하기쉬운 파일로 만듭니다. 인증서를 장기적으로 사용할 계획이면 발급명령어를 크론으로 빼두셔도 됩니다.

mkdir /root/nas.banipest.com
.acme.sh/acme.sh --install-cert -d nas.banipest.com \
--cert-file /root/nas.banipest.com/cert.pem \
--key-file /root/nas.banipest.com/key.pem \
--fullchain-file /root/nas.banipest.com/fullchain.pem

방금 저장한 인증서를 가져올 jail을 선택해주세요. 저는 nextcloud 플러그인을 사용하도록 하겠습니다. jail이 가동중이면 중지시키고, mount point에 들어가서 인증서를 설치한 폴더를 마운트시킵니다.

저같은 경우는

source /root/nas.banipest.com
destination /mnt/main/iocage/jails/nextcloud/root/mnt/nas.banipest.com

로 읽기전용으로 추가했습니다. nextcloud 인스턴스의 /mnt폴더에서 인증서를 가져 올 수 있게 되었습니다. 이후 적용할 jail 인스턴스를 가동하고, 웹UI의 Jails탭이나 쉘의 jls 명령어로 적용할 인스턴스의 id를 확인합니다. 이후 jexec (id) tcsh로 해당 인스턴스에 접속 해 주세요.

인스턴스에 접속 후 find 명령어로 웹서버 설정파일의 위치를 찾아줍니다. nextcloud는 nginx를 사용하고 있으므로 검색어로 nginx.conf를 입력했습니다.

root@nextcloud:/ # find / -name nginx.conf
/usr/local/etc/nginx/nginx.conf

텍스트 에디터로 웹서버 설정파일을 엽니다. nano /usr/local/etc/nginx/nginx.conf입니다. 텍스트 에디터를 쭉쭉 내리시면 인증서를 설정하는 라인이 있습니다. 기존 인증서 파일을 주석처리하고, 아까 마운트시킨 인증서 파일로 대체 해 주세요.

  # ssl_certificate /usr/local/etc/letsencrypt/live/truenas/fullchain.pem;
  ssl_certificate /mnt/nas.banipest.com/fullchain.pem;

  # ssl_certificate_key /usr/local/etc/letsencrypt/live/truenas/privkey.pem;
  ssl_certificate_key /mnt/nas.banipest.com/key.pem;

수정 후 service nginx restart로 nginx를 재시작합니다. 오류가 있으면 수정해야될 설정키와 라인을 출력해주니 찾아서 수정하면 됩니다. 아파치, 톰캣서버를 사용하는 경우에도 비슷한 요령으로 적용하면 됩니다.

결과

인증서 오류없이 제대로 접속되는걸 확인 할 수 있습니다. 하지만 각 jail마다 쉘로 접속해서 인증서를 갱신해주는 방법은 비효율적이고 접근성이 빈약하기 그지 없습니다. Truenas core에서는 웹ui에서 인증서를 관리 할 수 있음에도 불구하고, jail 설정창에서 SSL 인증서를 넣을 수 있게 추상화를 해두지 않은건 다른 이유가 있어서일까요..

다음에는 웹서버용 jail을 만들어 리버스 프록싱으로 플러그인을 관리하는법을 정리하겠습니다.

레퍼런스

0개의 댓글