Hướng dẫn cài đặt ZeroSSL trên Zimbra Mail

Giới thiệu

Tiếp tục với Series về Zimbra thì ở bài viết này mình sẽ hướng dẫn các bạn cách cài đặt và cấu hình ZeroSSL cho máy chủ Zimbra Mail Server. Chi tiết các bước cài đặt mời các bạn xem ở phần cài đặt bên dưới.

Hướng dẫn cài đặt

Bước 1: Tạo File cấu hình

  • Chỉnh sửa file nginx.conf.web.https.default.template
Đàm Trung Kiên
vi /opt/zimbra/conf/nginx/templates/nginx.conf.web.https.default.template
    

Tiếp đó bạn thêm nội dung bên dưới vào và save lại.

include              ${core.includes}/${core.cprefix}.lets.conf;
Hướng dẫn cài đặt ZeroSSL trên Zimbra Mail
  • Chỉnh sửa file nginx.conf.lets.conf
Đàm Trung Kiên
vi /opt/zimbra/conf/nginx/includes/nginx.conf.lets.conf
    

Thêm cấu hình bên dưới vào và save lại.

Lưu ý: Phần server_name

server {
        listen 80 default_server;
        server_name _;
        access_log off;

        location ^~ /.well-known/acme-challenge {
                root /opt/zimbra/data/nginx/html;
        }

        location / {

                rewrite ^/(.*) https://$host$request_uri     permanent;
        }
}

server {
        listen 80;
        server_name example.com;     ### Nhập tên Domain của bạn ###
        return 301 https://$host$request_uri;
        access_log off;
        root /opt/zimbra/data/nginx/html;
        index index.html index.htm;

        location ^~ /.well-known/acme-challenge {
                root /opt/zimbra/data/nginx/html;
        }

        location / {
              try_files $uri $uri/ =404;
        }
}

Nội dung khi thêm sẽ tương tự như hình.

Hướng dẫn cài đặt ZeroSSL trên Zimbra Mail
  • Khởi động lại dịch vụ Zimbra Mail
Đàm Trung Kiên
su zimbra
zmcontrol restart
exit
    
Hướng dẫn cài đặt ZeroSSL trên Zimbra Mail

Bước 2: Cài đặt acme.sh

ACME là gì?

Giao thức ACME , là từ viết tắt của Automatic Certificate Management Environment, nghĩa là “Môi trường quản lý chứng chỉ tự động”.  ACME là một giao thức truyền thông để tự động hóa việc trao đổi giữa các cơ quan cấp phát chứng chỉ và chủ sở hữu máy chủ web.

Trước đây mặc định ACME sẽ dùng hệ thống cấp phát chứng chỉ của Let’s Encrypt, nhưng tại thời điểm mình viết bài này thì ACME đã chuyển sang dùng ZeroSSL thay cho Let’s Encrypt. Và dưới đây là 2 cách cài đặt acme.sh.

Lưu ý: Bạn nhớ thay my@example.com bằng Email của bạn

  • Cách 1: Cài đặt Online
Đàm Trung Kiên
curl https://get.acme.sh | sh -s email=my@example.com
    

Hoặc

Đàm Trung Kiên
wget -O -  https://get.acme.sh | sh -s email=my@example.com
    
  • Cách 2: Cài đặt từ GIT
Đàm Trung Kiên
git clone https://github.com/acmesh-official/acme.sh.git
cd ./acme.sh
./acme.sh --install -m my@example.com
    

Và dưới đây là hình cài đặt acme.sh thành công.

Hướng dẫn cài đặt ZeroSSL trên Zimbra Mail

Sau khi cài xong bạn hãy tạo và copy acme.sh vào $HOME của bạn. Bạn hãy chạy lệnh sau để ghi vào.

Đàm Trung Kiên
echo "alias acme.sh='~/.acme.sh/acme.sh'" >> /root/.bashrc
source /root/.bashrc
    
Hướng dẫn cài đặt ZeroSSL trên Zimbra Mail

Bước 3: Cài đặt chứng chỉ ZeroSSL

Bây giờ chúng ta sẽ thực hiện xác thực chứng chỉ ZeroSSL thông qua acme với cụ thể lệnh sau

Lưu ý: Bạn nhớ thay mail.damtrungkien.info bằng Domain của bạn.

Đàm Trung Kiên
acme.sh --issue -d mail.damtrungkien.info -w /opt/zimbra/data/nginx/html --force
    
root@mail:~# acme.sh --issue -d mail.damtrungkien.info -w /opt/zimbra/data/nginx/html --force
[Wed 20 Jul 2022 02:29:21 PM +07] Using CA: https://acme.zerossl.com/v2/DV90
[Wed 20 Jul 2022 02:29:21 PM +07] Creating domain key
[Wed 20 Jul 2022 02:29:21 PM +07] The domain key is here: /root/.acme.sh/mail.damtrungkien.info/mail.damtrungkien.info.key
[Wed 20 Jul 2022 02:29:21 PM +07] Single domain='mail.damtrungkien.info'
[Wed 20 Jul 2022 02:29:21 PM +07] Getting domain auth token for each domain
[Wed 20 Jul 2022 02:29:59 PM +07] Getting webroot for domain='mail.damtrungkien.info'
[Wed 20 Jul 2022 02:29:59 PM +07] Verifying: mail.damtrungkien.info
[Wed 20 Jul 2022 02:30:12 PM +07] Processing, The CA is processing your order, please just wait. (1/30)
[Wed 20 Jul 2022 02:30:27 PM +07] Success
[Wed 20 Jul 2022 02:30:27 PM +07] Verify finished, start to sign.
[Wed 20 Jul 2022 02:30:27 PM +07] Lets finalize the order.
[Wed 20 Jul 2022 02:30:27 PM +07] Le_OrderFinalize='https://acme.zerossl.com/v2/DV90/order/GjeC7lC5QVYqw1-gK_LqYQ/finalize'
[Wed 20 Jul 2022 02:30:43 PM +07] Order status is processing, lets sleep and retry.
[Wed 20 Jul 2022 02:30:43 PM +07] Retry after: 15
[Wed 20 Jul 2022 02:30:59 PM +07] Polling order status: https://acme.zerossl.com/v2/DV90/order/GjeC7lC5QVYqw1-gK_LqYQ
[Wed 20 Jul 2022 02:31:13 PM +07] Downloading cert.
[Wed 20 Jul 2022 02:31:13 PM +07] Le_LinkCert='https://acme.zerossl.com/v2/DV90/cert/AGgox0p5Rv4FV-Ki9wElBw'
[Wed 20 Jul 2022 02:31:24 PM +07] Cert success.
-----BEGIN CERTIFICATE-----
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
-----END CERTIFICATE-----
[Wed 20 Jul 2022 02:31:24 PM +07] Your cert is in: /root/.acme.sh/mail.damtrungkien.info/mail.damtrungkien.info.cer
[Wed 20 Jul 2022 02:31:24 PM +07] Your cert key is in: /root/.acme.sh/mail.damtrungkien.info/mail.damtrungkien.info.key
[Wed 20 Jul 2022 02:31:24 PM +07] The intermediate CA cert is in: /root/.acme.sh/mail.damtrungkien.info/ca.cer
[Wed 20 Jul 2022 02:31:24 PM +07] And the full chain certs is there: /root/.acme.sh/mail.damtrungkien.info/fullchain.cer
Hướng dẫn cài đặt ZeroSSL trên Zimbra Mail

Sau khi chạy xong, bạn sẽ nhận được các chứng chỉ trong đó:

  • Your cert is in: Chứng chỉ SSL (Certificate) của Domain.
  • Your cert key is inKhóa riêng chứng chỉ.
  • The intermediate CA cert is inCA root
  • And the full chain certs is there: CA root và Certificate

Bước 4: Deploy ZeroSSL lên Zimbra

  • Tạo thư mục lưu chứng chỉ
Đàm Trung Kiên
mkdir -p /opt/zimbra/zerossl/
    
  • Copy toàn bộ chứng chỉ vào thư mục vừa tạo và phần quyền
Đàm Trung Kiên
cp /root/.acme.sh/mail.damtrungkien.info/* /opt/zimbra/zerossl/
chown -R zimbra:zimbra /opt/zimbra/zerossl/
    
Hướng dẫn cài đặt ZeroSSL trên Zimbra Mail
  • Verify chứng chỉ ZeroSSL 
Đàm Trung Kiên
su zimbra
cd /opt/zimbra/zerossl/
wget https://gogetssl-cdn.s3.eu-central-1.amazonaws.com/wiki/SectigoRSADVBundle-sha1.txt
cat SectigoRSADVBundle-sha1.txt >> ca.cer
/opt/zimbra/bin/zmcertmgr verifycrt comm mail.damtrungkien.info.key mail.damtrungkien.info.cer ca.cer
    

Nếu trạng thái Verify là OK như hình là thành công.

Hướng dẫn cài đặt ZeroSSL trên Zimbra Mail
  • Deploy chứng chỉ lên Zimbra

Trước khi Deploy SSL, bạn cần copy file key vào đường dẫn mà Zimbra quy định.

Đàm Trung Kiên
mv /opt/zimbra/ssl/zimbra/commercial/commercial.key /opt/zimbra/ssl/zimbra/commercial/commercial.key.bk
cp /opt/zimbra/zerossl/mail.damtrungkien.info.key /opt/zimbra/ssl/zimbra/commercial/commercial.key
    

Bây giờ bạn hãy chạy lệnh Deploy bên dưới

Đàm Trung Kiên
/opt/zimbra/bin/zmcertmgr deploycrt comm mail.damtrungkien.info.cer ca.cer
    

Dưới đây là kết quả khi Deploy chứng chỉ.

zimbra@mail:~/zerossl$ /opt/zimbra/bin/zmcertmgr deploycrt comm mail.damtrungkien.info.cer ca.cer
** Fixing newlines in 'ca.cer'
** Verifying 'mail.damtrungkien.info.cer' against '/opt/zimbra/ssl/zimbra/commercial/commercial.key'
Certificate 'mail.damtrungkien.info.cer' and private key '/opt/zimbra/ssl/zimbra/commercial/commercial.key' match.
** Verifying 'mail.damtrungkien.info.cer' against 'ca.cer'
Valid certificate chain: mail.damtrungkien.info.cer: OK
** Copying 'mail.damtrungkien.info.cer' to '/opt/zimbra/ssl/zimbra/commercial/commercial.crt'
** Copying 'ca.cer' to '/opt/zimbra/ssl/zimbra/commercial/commercial_ca.crt'
** Appending ca chain 'ca.cer' to '/opt/zimbra/ssl/zimbra/commercial/commercial.crt'
** Importing cert '/opt/zimbra/ssl/zimbra/commercial/commercial_ca.crt' as 'zcs-user-commercial_ca' into cacerts '/opt/zimbra/common/lib/jvm/java/lib/security/cacerts'
** NOTE: restart mailboxd to use the imported certificate.
** Saving config key 'zimbraSSLCertificate' via zmprov modifyServer mail.damtrungkien.info...ok
** Saving config key 'zimbraSSLPrivateKey' via zmprov modifyServer mail.damtrungkien.info...ok
** Installing imapd certificate '/opt/zimbra/conf/imapd.crt' and key '/opt/zimbra/conf/imapd.key'
** Copying '/opt/zimbra/ssl/zimbra/commercial/commercial.crt' to '/opt/zimbra/conf/imapd.crt'
** Copying '/opt/zimbra/ssl/zimbra/commercial/commercial.key' to '/opt/zimbra/conf/imapd.key'
** Creating file '/opt/zimbra/ssl/zimbra/jetty.pkcs12'
** Creating keystore '/opt/zimbra/conf/imapd.keystore'
** Installing ldap certificate '/opt/zimbra/conf/slapd.crt' and key '/opt/zimbra/conf/slapd.key'
** Copying '/opt/zimbra/ssl/zimbra/commercial/commercial.crt' to '/opt/zimbra/conf/slapd.crt'
** Copying '/opt/zimbra/ssl/zimbra/commercial/commercial.key' to '/opt/zimbra/conf/slapd.key'
** Creating file '/opt/zimbra/ssl/zimbra/jetty.pkcs12'
** Creating keystore '/opt/zimbra/mailboxd/etc/keystore'
** Installing mta certificate '/opt/zimbra/conf/smtpd.crt' and key '/opt/zimbra/conf/smtpd.key'
** Copying '/opt/zimbra/ssl/zimbra/commercial/commercial.crt' to '/opt/zimbra/conf/smtpd.crt'
** Copying '/opt/zimbra/ssl/zimbra/commercial/commercial.key' to '/opt/zimbra/conf/smtpd.key'
** Installing proxy certificate '/opt/zimbra/conf/nginx.crt' and key '/opt/zimbra/conf/nginx.key'
** Copying '/opt/zimbra/ssl/zimbra/commercial/commercial.crt' to '/opt/zimbra/conf/nginx.crt'
** Copying '/opt/zimbra/ssl/zimbra/commercial/commercial.key' to '/opt/zimbra/conf/nginx.key'
** NOTE: restart services to use the new certificates.
** Cleaning up 7 files from '/opt/zimbra/conf/ca'
** Removing /opt/zimbra/conf/ca/8d33f237.0
** Removing /opt/zimbra/conf/ca/4042bcee.0
** Removing /opt/zimbra/conf/ca/ad803068.0
** Removing /opt/zimbra/conf/ca/commercial_ca_2.crt
** Removing /opt/zimbra/conf/ca/commercial_ca_1.crt
** Removing /opt/zimbra/conf/ca/ca.pem
** Removing /opt/zimbra/conf/ca/ca.key
** Copying CA to /opt/zimbra/conf/ca
** Copying '/opt/zimbra/ssl/zimbra/ca/ca.key' to '/opt/zimbra/conf/ca/ca.key'
** Copying '/opt/zimbra/ssl/zimbra/ca/ca.pem' to '/opt/zimbra/conf/ca/ca.pem'
** Creating CA hash symlink 'ad803068.0' -> 'ca.pem'
** Creating /opt/zimbra/conf/ca/commercial_ca_1.crt
** Creating CA hash symlink '1b19814d.0' -> 'commercial_ca_1.crt'
** Creating /opt/zimbra/conf/ca/commercial_ca_2.crt
** Creating CA hash symlink 'fc5a8f99.0' -> 'commercial_ca_2.crt'
** Creating /opt/zimbra/conf/ca/commercial_ca_3.crt
** Creating CA hash symlink '65ff7287.0' -> 'commercial_ca_3.crt'
** Creating /opt/zimbra/conf/ca/commercial_ca_4.crt
** Creating CA hash symlink 'fc5a8f99.1' -> 'commercial_ca_4.crt'
** Creating /opt/zimbra/conf/ca/commercial_ca_5.crt
** Creating CA hash symlink 'ee64a828.0' -> 'commercial_ca_5.crt'
  • Khởi động lại dịch vụ Zimbra
Đàm Trung Kiên
zmcontrol restart
    
Hướng dẫn cài đặt ZeroSSL trên Zimbra Mail

Và đây là kết quả sau khi hoàn tất các bước cài đặt.

Hướng dẫn cài đặt ZeroSSL trên Zimbra Mail

Chúc các bạn thực hiện thành công.!

  1. Khi mình chỉnh sửa file vi /opt/zimbra/conf/nginx/includes/nginx.conf.lets.conf
    Copy đoạn code
    server {
        listen 80 default_server;
        server_name _;
        access_log off;

        location ^~ /.well-known/acme-challenge {
            root /opt/zimbra/data/nginx/html;
        }

        location / {

            rewrite ^/(.*) https://$host$request_uri   permanent;
        }
    }

    server {
        listen 80;
        server_name zimbra-phi.click;
        return 301 https://$host$request_uri;
        access_log off;
        root /opt/zimbra/data/nginx/html;
        index index.html index.htm;

        location ^~ /.well-known/acme-challenge {
            root /opt/zimbra/data/nginx/html;
        }

        location / {
           try_files $uri $uri/ =404;
        }
    }

    Thì khi zmcontrol restart, thì trả về Starting proxy…nginx: [emerg] a duplicate default server for 0.0.0.0:80 in /opt/zimbra/conf/nginx/includes/nginx.conf.lets.conf:2 failed. Fix sao vậy bạn

Leave a Reply

Your email address will not be published. Required fields are marked *