Nội dung bài viết
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
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;
- Chỉnh sửa file nginx.conf.lets.conf
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.
- Khởi động lại dịch vụ Zimbra Mail
su zimbra zmcontrol restart exit
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
curl https://get.acme.sh | sh -s email=my@example.com
Hoặc
wget -O - https://get.acme.sh | sh -s email=my@example.com
- Cách 2: Cài đặt từ GIT
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.
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.
echo "alias acme.sh='~/.acme.sh/acme.sh'" >> /root/.bashrc source /root/.bashrc
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.
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
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 in: Khóa riêng chứng chỉ.
- The intermediate CA cert is in: CA 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ỉ
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
cp /root/.acme.sh/mail.damtrungkien.info/* /opt/zimbra/zerossl/ chown -R zimbra:zimbra /opt/zimbra/zerossl/
- Verify chứng chỉ ZeroSSL
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.
- 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.
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
/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
zmcontrol restart
Và đây là kết quả sau khi hoàn tất các bước cài đặt.
Chúc các bạn thực hiện thành công.!
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