Rocky Linux - 짐브라(Zimbra) 메일서버 인증서 적용「Let's Encrypt」

    여기서는 인증서를 무료로 제공하는 기관 LetsEncrypt와 자동으로 발급해주는 Certbot 소프트웨어 도구를 이용하여 짐브라(Zimbra) 메일서버에 인증서를 적용하는 방법을 알아보도록 하겠습니다.

    설치환경 및 준비물

    마지막 릴리즈 테스트 : [2022-09-28]

    Zimbra Collaboration Open Source 버전 : 8.8.15

    OS : Rocky Linux 8.6

     짐브라(Zimbra) 메일서버 설치「실서버 구축」 포스팅 참고

     

    참고 문서

    짐브라(Zimbra) 공식 문서 [Let's Encrypt] SSL 설치 가이드

    SSL 보안 인증서 무료 발급받기 [Let's Encrypt] 포스팅 참고


    STEP01 → LetsEncrypt인증서 발급받기 위한 Certbot 패키지 설치

    ※ Rocky Linux 8.6 기본 저장소에는 배포하지 않으므로 별도 저장소를 추가해야 합니다.

    [root@zmail ~]# dnf install epel-release    [Epel 저장소 추가]

    [root@zmail ~]# dnf install certbot    [certbot 설치]

     

    그리고 Zimbra에 세팅한 도메인을 확인 합니다.

    [root@zmail ~]# su - zimbra -c "zmhostname"    [zmhostname 명령어 이용]
    zmail.foxydog.pe.kr


    STEP02 → 인증서 발급받기 [수동 진행]

    ① 일시적 방화벽 중지

    [root@zmail ~]# systemctl stop firewalld

    Certbot 인증서 발급받을 때 기본적으로 80 포트로 통신을 합니다.

    편의상 일시적으로 오픈하거나 또는 방화벽을 중지하는 게 작업하기 편합니다.

    ② Zimbra 서비스 중지

    [root@zmail ~]# su - zimbra -c "zmcontrol stop"

    ③ 인증서 발급

    ※ 참고사항

    Zimbra 솔루션은 인증서를 적용할 때 ROOT 인증서도 같이 체크를 합니다.

    원래는 다음과 같이 옵션이 포함되어야 합니다. 아래는 예시입니다.

     

    패턴 1 인증서를 새로 발급받을 경우

    [root@zmail ~]# certbot certonly -d zmail.foxydog.pe.kr --preferred-chain "ISRG Root X1"

     

    패턴 2 이미 발급받은 인증서를 강제로 갱신할 경우

    [root@zmail ~]# certbot certonly -d zmail.foxydog.pe.kr --force-renewal --preferred-chain "ISRG Root X1"

    [인증서 발급 시작]

    How would you like to authenticate with the ACME CA?

     

    [Enter]How would you like to authenticate with the ACME CA?

    ※ 상황에 따라 다르게 나올 수 있습니다. Standalone 을 선택하면 됩니다.
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    1: Spin up a temporary webserver (standalone)
    2: Place files in webroot directory (webroot)
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 1 [Enter]

    Enter email address (used for urgent renewal and security notices)
     (Enter 'c' to cancel): foxydog@foxydog.pe.kr    [관리자 메일 주소 입력]

     

    라이선스 동의 둘 다 Y [Enter] 후, 문제가 없다면 아래와 같은 메시지 출력

    Account registered.
    Requesting a certificate for zmail.foxydog.pe.kr

    Successfully received certificate. [정상 패턴]
    Certificate is saved at: /etc/letsencrypt/live/zmail.foxydog.pe.kr/fullchain.pem
    Key is saved at: /etc/letsencrypt/live/zmail.foxydog.pe.kr/privkey.pem
    This certificate expires on 2022-12-27.
    These files will be updated when the certificate renews.
    Certbot has set up a scheduled task to automatically renew this certificate in the background.
    We were unable to subscribe you the EFF mailing list. You can try again later by visiting https://act.eff.org.


    STEP03 → Zimbra 인증서 작업

    ① 발급받은 인증키(Privkey)를 Zimbra SSL 경로에 복사

    [root@zmail ~]# cp /etc/letsencrypt/live/zmail.foxydog.pe.kr/privkey.pem /opt/zimbra/ssl/zimbra/commercial/commercial.key

     

    [root@zmail ~]# chown zimbra:zimbra /opt/zimbra/ssl/zimbra/commercial/commercial.key    [권한 수정]

    ② 관리를 위해 별도 폴더 생성 및 Zimbra 권한 부여

    [root@zmail ~]# mkdir /opt/zimbra/ssl/letsencrypt    [폴더 생성]

    [root@zmail ~]# cp /etc/letsencrypt/live/zmail.foxydog.pe.kr/* /opt/zimbra/ssl/letsencrypt/    [인증서 복사]

    [root@zmail ~]# chown -R zimbra:zimbra /opt/zimbra/ssl/letsencrypt/    [Zimbra 권한 부여]

    ③ Letsencrypt ROOT 인증서 통합

    참고 사이트 : Chain of Trust - Let's Encrypt (letsencrypt.org)

     

    [root@zmail ~]# wget -O /tmp/ISRG-X1.pem https://letsencrypt.org/certs/isrgrootx1.pem.txt    [Root 인증서 수동 다운]

    [root@zmail ~]# cat /tmp/ISRG-X1.pem >> /opt/zimbra/ssl/letsencrypt/chain.pem    [인증서 통합]

     

    [root@zmail ~]# vi /opt/zimbra/ssl/letsencrypt/chain.pem    [인증서 확인]

    ※ 체인 인증서를 열었을 때 인증서 정보가 2개가 들어가 있으면 정상, 스크린샷 예시


    STEP04 → Zimbra 인증서 체크

    ※ Zimbra 솔루션에서 제공하는 zmcertmgr 명령어를 이용

    [root@zmail ~]# su - zimbra -c "/opt/zimbra/bin/zmcertmgr verifycrt comm /opt/zimbra/ssl/zimbra/commercial/commercial.key /opt/zimbra/ssl/letsencrypt/cert.pem /opt/zimbra/ssl/letsencrypt/chain.pem"    [전체 한 줄]


    STEP05 → Zimbra 인증서 적용

    [root@zmail ~]# su - zimbra -c "/opt/zimbra/bin/zmcertmgr deploycrt comm /opt/zimbra/ssl/letsencrypt/cert.pem /opt/zimbra/ssl/letsencrypt/chain.pem"    [전체 한 줄]


    STEP06 → Zimbra 서비스 시작 및 웹 HTTPS 접속 확인

    [root@zmail ~]# systemctl start firewalld    [방화벽 시작]

    [root@zmail ~]# su - zimbra -c "zmcontrol start"    [짐브라 시작]

    [root@zmail ~]# curl -v https://localhost    [서버에서 확인 방법, Localhost에 본인 도메인 입력]

     

    ※ 브라우저에서 확인, 크롬(Chrome) 예시

    모든 브라우저 대부분 비슷한 위치에 있으며 보는 방법도 크게 다르지 않습니다.

     

    ※ 클라이언트 아웃룩 프로그램 SSL/TLS 연결 테스트


    마치며

    명령어 zmcertmgr만 입력을 하시면 사용(옵션) 예시가 나옵니다. 해당 명령어를 통해 인증서를 적용해야 하기 때문에 명령어에 대해서 기본적인 방법을 숙지할 필요가 있습니다.

    순서 정리
    ① Zimbra 서비스 중지 # su - zimbra -c "zmcontrol stop"
    ② 인증서 발급, 여기서는 Let's Encrypt 무료 인증서로 적용하였지만 인증서 업체에서 구입(발급)하여 적용 할 수 도 있습니다.
    ③ 인증키 Zimbra 경로로 복사 # cp /인증키경로/privkey.pem /opt/zimbra/ssl/zimbra/commercial/commercial.key
    ④ 인증키(인증서) Zimbra 권한 부여 # chown zimbra:zimbra /opt/zimbra/ssl/zimbra/commercial/commercial.key
    ⑤ 인증서 체크 # su - zimbra -c "/opt/zimbra/bin/zmcertmgr verifycrt comm /opt/zimbra/ssl/zimbra/commercial/commercial.key /인증서경로/cert.pem /체인인증서경로/chain.pem
    ⑥ 인증서 적용 # su - zimbra -c "/opt/zimbra/bin/zmcertmgr deploycrt comm /인증서경로/cert.pem /체인인증서경로/chain.pem
    ⑦ Zimbra 서비스 시작 # su - zimbra -c "zmcontrol start"

    참고하시기 바랍니다.

    Designed by JB FACTORY