CentOS 8 - Roundcube 메일 보안 인증서 적용하기 (Apache)

    CentOS 8 - Applying Roundcube Mail Security Certificate (Apache)

    무료 SSL 보안인증서 발급받기 : https://foxydog.tistory.com/39

    이제 받은 인증서를 가지고 Roundcube 메일서버 SSL 보안 인증서를 적용해보도록 하겠습니다.

    Roundcube 메일서버는 Apache로 구성되어 있으므로 httpd.conf 설정을 수정을 하면 되며 SMTP를 통해 메일을 주고받을 경우와 POP/IMAP 클라이언트 이용 시에도 SSL로 인증하기 위한 Postfix, Dovecot 설정도 같이 알아보도록 하겠습니다. ※ 인증서는 [SSL For Free]에서 발급받은 무료 인증서로 실전 테스트합니다.


    STEP01 → Roundcube Apache에 보안 인증서 적용

     

    ① SSL 인증서 파일 업로드

    [root@localhost ~]# /etc/ssl/ (리눅스에서 일반적인 인증서 경로)

    ※ 업로드는 httpd.conf 설정 시에 인증서 업로드 위치(절대 경로)만 제대로 맞춰주면 어디에 업로드하던 상관없습니다.

    다만, 위치 및 구분하기 편하게 하기 위해서 기본 경로에 올리는 게 좋습니다.

    ※ 진행하기 전 Apache 보안 인증서를 이용하기 위해서는 [mod_ssl] 모듈이 꼭 설치가 되어있어야 합니다.

    만약 설치 안 하고 적용하면 " Invalid command 'SSLEngine', perhaps misspelled or defined by a module not included in the server configuration " 에러가 발생합니다.

    [root@localhost ~]# dnf install mod_ssl  (SSL 모듈 설치)

     

    ② Apache ssl.conf 인증서 설정하기

    ※ RPM설치 시 기본 경로에 ssl.conf 파일이 생성됩니다.

    ※ 꼭 아래에 설정 파일에 할 필요는 없으며 vhost.conf 별도의 가상 호스트 설정이 있다면 최소 아래 값들을 등록하면 됩니다.

    [root@localhost ~]# vim /etc/httpd/conf.d/ssl.conf  (파일 수정)

     

      5 Listen 443 https  [수정 X]

     

     56 <VirtualHost _default_:443>  [▷ 시작 지점]

     

     59 DocumentRoot "/var/www/html/roundcube"  [홈페이지 경로 변경]

     60 ServerName mail.foxydog.co.kr  [도메인 네임 이름 변경]

     

     70 SSLEngine on

    101 SSLCertificateFile /etc/ssl/mail.foxydog.co.kr/certificate.crt  [인증서(CRT) 경로 변경]

    109 SSLCertificateKeyFile /etc/ssl/mail.foxydog.co.kr/private.key  [인증서(KEY) 경로 변경]

    126 SSLCACertificateFile /etc/ssl/mail.foxydog.co.kr/ca_bundle.crt  [인증서(CA) 번들 경로 변경]

     

    220 </VirtualHost>  [◀끝 지점(이 범위 안에 각 옵션 포함 적용)]

    [참고]

    [SSLCACertificateFile / SSLCertificateChainFile] 이 두 개의 옵션이 [root(루트) / Chain(체인)] 인증서를 설치할 때 가장 많이 혼동할 수 있는 부분인데요, 이렇게 생각하시면 편합니다.

     

    패턴 1. CA 번들[ca_bundle] 형태로 인증서를 받았을 경우

    ca_bundle.crt(pem) 인증서는 [루트 / 체인]이 같이 통합된 파일입니다. 인증서 업체에서 처음부터 번들 형태로 발급을 해준다면 [SSLCACertificateFile] 에만 적용해주면 됩니다.

     

    패턴 2.  [루트 / 체인] 두 개로 나누어 받았을 경우

    AAACertificateServices.crt (루트) / chain-bundle.pem (체인) 예시와 같이 따로 받았을 경우는 각각 추가로 등록을 해줘야 합니다.

    SSLCACertificateFile /.../AAACertificateServices.crt  (루트)

    SSLCertificateChainFile /.../chain-bundle.pem  (체인)

     

    만약 번들로 통합하고 싶다면 아래와 같이 진행

    ※ 통합 방법[cat 루트 인증서 체인 인증서 > 변경할 이름.crt(pem)]

    [root@localhost ~]# cat AAACertificateServices.crt chain-bundle.pem > Ca_bundle.crt(pem)

     

    ③ 무조건 보안접속을 위한 HTTP(80) → HTTPS(443) URL 강제 리다이렉트 설정

    ※ 만약 단순히 접속 URL를 통으로 HTTPS:주소로 표시하고 싶다면 굳이 어렵게 [RewriteEngine] 모듈을 사용할 필요 없이 [Redirect] 옵션 사용하시면 됩니다.

    [root@localhost ~]# vi /etc/httpd/conf/vhost.conf

     

    <VirtualHost *:80>

            DocumentRoot /var/www/html/roundcube

            ServerName mail.foxydog.co.kr  [◁ 해당 주소로 80 포트로 응답 들어올 경우]

            Redirect / https://mail.foxydog.co.kr [◀ URL로 강제로 리다이렉트]

    </VirtualHost>

     

     Apache 서비스 재시작

    [root@localhost ~]# systemctl restart httpd

     

     방화벽 허용 [※ 저의 경우는 iptables 이용]

    [root@localhost ~]# vim /etc/sysconfig/iptables

    -A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT  (443 포트 허용 추가)

     

    [root@localhost ~]# systemctl restart iptables  (방화벽 재시작)

     

    ⑥ 443 포트 응답하는지 확인

    [root@localhost ~]# netstat -nlp | grep 443

    tcp6       0      0 :::443                  :::*                    LISTEN(정상 응답)      27126/httpd

     

     

    STEP02 → 웹메일 접속 인증서 확인[HTTPS URL 리다이렉트 확인]

     

    한 포스팅에 너무 길어지면 늘어지는 경향이 있어서 앞으로는 되도록 적당한 선에서 끊어 포스팅하도록 하겠습니다.

    Postfix, Dovecot 설정은 to be continued...

    Designed by JB FACTORY