Zimbra SSL證書一鍵安裝和續期腳本

上篇我們講述了使用 Let's Encrypt 爲Zimbra 安裝可信任的SSL證書,但是是手動方式,由於Let's Encrypt 證書有效期只有3個月,所以每3個月需要再次進行續期,每次都手動做一下的話很麻煩,於是我這裏把步驟都整理成一個腳本,當需要續期的時候直接運行腳本即可,同時也可以用於首次安裝證書。

說是一鍵安裝腳本,實際上由於生成證書的時候有交互,且首次安裝證書與續期的時候交互不一樣,所以腳本里不好控制,就沒有實現完全的一鍵安裝,但已經大大的節省了時間成本,每3個月運行一次,一年就運行4次,有何不可呢。

系統環境:CentOS7.7 64位

Zimbra版本:Zimbra-8.8.15

說明:本腳本僅支持 Zimbra8.7及以上版本,Zimbra8.6及以下版本請訪問zimbra wiki原文進行操作:https://wiki.zimbra.com/wiki/Installing_a_LetsEncrypt_SSL_Certificate

腳本內容如下:

cat zimbra-ssl-install-and-renew.sh

#!/bin/bash
# Author: Alex Chen 
# Website: https://www.chenxie.net/
# Create time: 2019/11/29
# Description: This script is for zimbra ssl certificate deploy and renew by Let's Encrypt.
# Note: Support Zimbra8.7 and above

if [ $USER != "root" ]; then
	echo "Must be root."
	exit
fi

domain=`hostname`
time=`date +%Y-%m-%d\ %H:%M:%S`

echo ">>> [$time] Start renew..."

echo ">>> [$time] Check local letsencrypt directory..."
if [ -d /opt/software/letsencrypt ]; then
	rm -rf /opt/software/letsencrypt
fi
if [ ! -f /usr/bin/git ]; then
	yum install -y git
fi

echo ">>> [$time] Clone letsencrypt to local /opt/software/letsencrypt"
mkdir -p /opt/software/letsencrypt
git clone https://github.com/letsencrypt/letsencrypt /opt/software/letsencrypt/

echo ">>> [$time] Stop service."
su - zimbra -c 'zmproxyctl stop'
su - zimbra -c 'zmmailboxdctl stop'

echo ">>> [$time] Build certificate..."
cd /opt/software/letsencrypt/ && ./letsencrypt-auto certonly --standalone

echo ">>> [$time] SSL Certificate files below:"
ls -l /etc/letsencrypt/live/$domain/

echo ">>> [$time] Build root CA."
echo '''
-----BEGIN CERTIFICATE-----
MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/
MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow
PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD
Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O
rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq
OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b
xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw
7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD
aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV
HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG
SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69
ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr
AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz
R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5
JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo
Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
-----END CERTIFICATE-----
''' >> /etc/letsencrypt/live/$domain/chain.pem

echo ">>> [$time] Prepare verify certificate."
if [ ! -d /opt/zimbra/ssl/letsencrypt ]; then
	mkdir /opt/zimbra/ssl/letsencrypt
fi
cp /etc/letsencrypt/live/$domain/* /opt/zimbra/ssl/letsencrypt/
chown zimbra:zimbra /opt/zimbra/ssl/letsencrypt/*

echo ">>> [$time] Verify certificate."
su - zimbra -c 'cd /opt/zimbra/ssl/letsencrypt/ && /opt/zimbra/bin/zmcertmgr verifycrt comm privkey.pem cert.pem chain.pem'

echo ">>> [$time] Start deploy..."
echo ">>> [$time] Backup Zimbra SSL directory"
cp -a /opt/zimbra/ssl/zimbra /opt/zimbra/ssl/zimbra.$(date "+%Y%m%d")

echo ">>> [$time] Copy the private key under Zimbra SSL commercial path."
cp /opt/zimbra/ssl/letsencrypt/privkey.pem /opt/zimbra/ssl/zimbra/commercial/commercial.key
chown zimbra.zimbra /opt/zimbra/ssl/zimbra/commercial/commercial.key

echo ">>> [$time] Final SSL deployment"
su - zimbra  -c 'cd /opt/zimbra/ssl/letsencrypt/ && /opt/zimbra/bin/zmcertmgr deploycrt comm cert.pem chain.pem'

echo ">>> [$time] Restart zimbra service."
su - zimbra -c 'zmcontrol restart'

echo ">>> [$time] Clean /opt/software/letsencrypt/"
rm -rf /opt/software/letsencrypt/

echo ">>> [$time] Done."

授予執行權限:

chmod +x zimbra-ssl-install-and-renew.sh

運行腳本:

./zimbra-ssl-install-and-renew.sh

按照提示操作即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章